C# 一次更改多个文本框

C# 一次更改多个文本框,c#,wpf,textbox,C#,Wpf,Textbox,在我的程序中,我有50个名为TB1到TB50的文本框 我正在尝试使用for循环,通过几行代码来更改它们的内容。而不是重复代码50次。然而,我不能让这个工作。任何帮助都将不胜感激(请看下面我从哪里得到的) private void按钮\u单击(对象发送者,路由目标) { 对于(int i=1;i

在我的程序中,我有50个名为TB1到TB50的文本框

我正在尝试使用for循环,通过几行代码来更改它们的内容。而不是重复代码50次。然而,我不能让这个工作。任何帮助都将不胜感激(请看下面我从哪里得到的)

private void按钮\u单击(对象发送者,路由目标)
{
对于(int i=1;i<50;i++)
{
字符串TB=“TB”+i;
TextBox TBN=新的TextBox();
TBN.Name=TB;
TBN.Text=“Textbox已更改”;
}
试试这个:

private void Button_Click(object sender, RoutedEventArgs e)
{
    for (int i =1; i < 50; i++)
    {
        string TB = "TB" + i;

        // credit to sTrenat
        TextBox TBN = this.Controls[TB];

        TBN.Text = "Textbox Changed";

    }
private void按钮\u单击(对象发送者,路由目标)
{
对于(int i=1;i<50;i++)
{
字符串TB=“TB”+i;
//功劳
TextBox TBN=this.Controls[TB];
TBN.Text=“Textbox已更改”;
}

首先根据文本框的位置获取某些元素的所有文本框,例如 如果它们在
grid
中,只需将
rootControl
替换为
grid
的名称,然后就可以使用lemon squezy了,使用这种方法文本框名称并不重要

IEnumerable<TextBox> TextboxCollection = rootControl.Children.OfType<TextBox>();
            foreach(TextBox tb in TextboxCollection)
            {
                tb.Text = "Text";
            }
IEnumerable TextboxCollection=rootControl.Children.OfType();
foreach(TextboxCollection中的TextBox)
{
tb.Text=“Text”;
}

您应该创建一个数组。您正在创建新的文本框,而不是使用窗体/窗口上的文本框。请后退一步。您不希望在此处创建新文本框以更改现有文本框的文本。这毫无意义。您需要找到已经存在的文本框。我对您的用户表示同情shmm,RoutedEvents…这就是创建此WPF?为什么要执行
TBN.Name=TB;
?您只是使用
TB
按名称查找它。将控件的名称设置为它已有的名称似乎是多余的。公平地说,我复制并粘贴了OP的代码。RoutedEventArgs将创建此WPF,因此没有控件集合。嘿,这无法工作,因为它找不到控件,因为这是WPF文件:/
TextBox TBN=this.FindName(TB)as TextBox;
IEnumerable<TextBox> TextboxCollection = rootControl.Children.OfType<TextBox>();
            foreach(TextBox tb in TextboxCollection)
            {
                tb.Text = "Text";
            }