我在一个页面上有大约100个文本框,每个文本框在数组中都有自己的对应值,每个文本框都有一个方法,当文本框中的值被更改时调用该方法,并更新数组的相应元素,以反映已更改的值。(理论上)
但是,是否有一种方法可以调整以下方法,以便与其用更改名称"_8_8_TextChanged",并更改其手动更改的值,而不是将其写入100次,并使所有文本框调用一个方法,并且该方法识别调用它的文本框,并更新数组中的相关元素?
下面定义了该方法,并在"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"/>发布于 2012-12-15 16:52:30
我真的希望你有一个充分的理由使用这么多文本框。无论如何,您可以对所有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;
}
}
}
}实际上,我并没有编译上面的代码,但是它应该给您一个很好的起点。
https://stackoverflow.com/questions/13893863
复制相似问题