首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收XAML按钮名

接收XAML按钮名
EN

Stack Overflow用户
提问于 2012-12-15 16:13:17
回答 1查看 672关注 0票数 0

我在一个页面上有大约100个文本框,每个文本框在数组中都有自己的对应值,每个文本框都有一个方法,当文本框中的值被更改时调用该方法,并更新数组的相应元素,以反映已更改的值。(理论上)

但是,是否有一种方法可以调整以下方法,以便与其用更改名称"_8_8_TextChanged",并更改其手动更改的值,而不是将其写入100次,并使所有文本框调用一个方法,并且该方法识别调用它的文本框,并更新数组中的相关元素?

下面定义了该方法,并在"Solver.xaml.cs“页面上提供了特性。

代码语言:javascript
复制
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“页面上,为了简单起见,删除了它的样式元素。

代码语言:javascript
复制
<TextBox x:Name="_8_8" TextChanged="_8_8_TextChanged"/>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-15 16:52:30

我真的希望你有一个充分的理由使用这么多文本框。无论如何,您可以对所有TextChange事件使用相同的事件处理程序,如下所示。

所有文本框都将设置为使用相同的处理程序:

代码语言:javascript
复制
<TextBox x:Name="_8_8" TextChanged="_x_y_TextChanged"/>
<TextBox x:Name="_8_9" TextChanged="_x_y_TextChanged"/>

然后,可以根据“发送”文本框更新数组:

代码语言:javascript
复制
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;
                }
            }
        }
    }

实际上,我并没有编译上面的代码,但是它应该给您一个很好的起点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13893863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档