C# 动态设置文本框文本

C# 动态设置文本框文本,c#,wpf,xaml,textbox,C#,Wpf,Xaml,Textbox,我有多个XAMLTextBoxe,当TextBox中的值发生更改时,每个XAMLTextBox都会在数组中操作一个对应的值,使用C#方法动态检查哪个TextBox调用了该方法 <TextBox x:Name="_0_0" TextChanged="_x_y_TextChanged"/> <TextBox x:Name="_0_1" TextChanged="_x_y_TextChanged"/> <TextBox x:Name="_0_2"

我有多个XAML
TextBox
e,当
TextBox
中的值发生更改时,每个XAML
TextBox
都会在数组中操作一个对应的值,使用
C#
方法动态检查哪个
TextBox
调用了该方法

    <TextBox x:Name="_0_0" TextChanged="_x_y_TextChanged"/>
    <TextBox x:Name="_0_1" TextChanged="_x_y_TextChanged"/>
    <TextBox x:Name="_0_2" TextChanged="_x_y_TextChanged"/>
    // And so on.....
    private void _x_y_TextChanged(object sender, TextChangedEventArgs e)
    {
        TextBox current = (TextBox)sender;
        string currentname = current.Name;
        string rowstring = currentname.Substring(1, 1);

        string columnstring = currentname.Substring(3, 1);

        int row = Convert.ToInt32(rowstring);
        int column = Convert.ToInt32(columnstring);

        // I've then detected the name of the textbox which has called it...
因此,可以使用此信息将
文本框中的信息动态存储在相应的数组索引中,或者您想对其执行的任何操作

然而,我的问题是:

如何创建一个使用数组中的索引位置的方法来调用相关的
文本框
并更新其文本?

使用
FindName(string)
按名称查找文本框,如下所示(其中
container
是一个包含所有文本框的控件):

private void UpdateTextBox(int行、int列、字符串文本)
{
TextBox TextBox=container.FindName(“”+行+“”+列)作为TextBox;
如果(文本框!=null)
{
Text=Text;
}
}

我建议使用MVVM模式、数据模板和ItemsControl来有效处理此问题。

有两种方法:

如果要管理大量数据,或者无法预测数组的长度,那么最好绑定到集合,而不是手动将数据插入或移出数组。如果您创建一个从ObservableCollection派生的类,而不是使用数组,那么数据ui关系非常简单

如果您确实需要手动执行此操作,那么最好将索引粘贴到文本框的“标记”字段中。您可以(a)在xaml中清楚地看到它,(b)轻松地解析它,(c)如果您在这里使用了公式的变体:

您可以遍历窗口中的文本框,并通过查看其标记索引找到正确的文本框:

    foreach (TextBox t in FindVisualChildren<TextBox>(this))
    {
        if ((int) t.Tag)  == my_index )
        {
            t.Text = "my_text_goes_here";
         }
    }
foreach(FindVisualChildren(this))中的文本框t)
{
if((int)t.Tag)=my_索引)
{
t、 Text=“我的文字在这里”;
}
}

我会按照我对这个问题的回答: 简而言之,我将创建一个包含实际值的类,然后创建一个包含信息类的集合

然后,我不会在文本框上使用事件“TextChanged”,而是在用于保存文本的依赖项属性上使用“sniff”进行更改。这可以在Dependency属性中轻松完成


最后,我将使用ItemsControl或ItemsPresenter来显示控件。控件的数量将跟随集合中的项目数量。

也许您可以用一个简单的示例来充实您的答案,以说明您的意思。就目前情况而言,它有点缺乏有用的细节来帮助解决这个问题所带来的问题。