0

ページに約100個のテキストボックスがあり、各テキストボックスには配列に独自の対応する値があり、各テキストボックスには、テキストボックスの値が変更されたときに呼び出されるメソッドがあり、それを反映するために配列の対応する要素を更新しますに変更された値です。(理論的には)

ただし、以下のメソッドを調整して、「_8_8_TextChanged」という名前を変更して100回書き出すのではなく、変更する値を手動で変更し、1つのメソッドが呼び出されるようにする方法はありますか?すべてのテキストボックスによって、メソッドはどのテキストボックスがそれを呼び出したかを認識し、配列内の関連する要素を更新しますか?

メソッドは以下に定義されており、「Solver.xaml.cs」ページに機能があります。

private void _8_8_TextChanged(object sender, TextChangedEventArgs e)
    {
        int number = int.Parse(_8_8.Text);
        if ((number >= 1) && (number <= 9))
        {
            for (int i = 0; i <= 8; i++)
            {
                if (i == (number - 1))
                {
                    content[8, 8, i] = true;
                }
                else
                {
                    content[8, 8, i] = false;
                }
            }
        }
    }

XAML テキスト ボックス自体は以下に定義されており、"Solver.xaml" ページの機能であり、簡潔にするためにスタイル要素が削除されています。

<TextBox x:Name="_8_8" TextChanged="_8_8_TextChanged"/>
4

1 に答える 1

3

多くのテキスト ボックスを使用する正当な理由があることを願っています。いずれにしても、次のように、すべての TextChange イベントに対して同じイベント ハンドラーを使用できます。

すべてのテキスト ボックスは、同じハンドラーを使用するように設定されます。

<TextBox x:Name="_8_8" TextChanged="_x_y_TextChanged"/>
<TextBox x:Name="_8_9" TextChanged="_x_y_TextChanged"/>

その後、送信テキスト ボックスに基づいて配列を更新できます。

private void _x_y_TextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox tb = (TextBox)sender;

        // use the Name of the textbox to determine x, y value
        string[] tmp_x_y = tb.Name.Split("_");
        // you may have to adjust these indices based on how Split actually
        // does its work.
        int x = int.Parse(tmp_x_y[0]);
        int y = int.Parse(tmp_x_y[1]);

        int number = int.Parse(tb.Text);
        if ((number >= 1) && (number <= 9))
        {
            for (int i = 0; i <= 8; i++)
            {
                if (i == (number - 1))
                {
                    content[x, y, i] = true;
                }
                else
                {
                    content[x, y, i] = false;
                }
            }
        }
    }

上記のコードを実際にコンパイルしたわけではありませんが、良い出発点になるはずです。

于 2012-12-15T16:52:30.867 に答える