C# C:在WF文本框中显示字符串变量

C# C:在WF文本框中显示字符串变量,c#,arrays,for-loop,C#,Arrays,For Loop,但这将返回“textBox1.Text”。如何使textbox.Text语句与for循环“兼容”?您没有告诉我们您使用的API是什么。 Asp.net?WPF?Windows窗体 在Asp.net中,可以使用FindControl方法 如果希望在某个时候维护代码,请使用更有意义的控件名称。业务逻辑不应依赖于控件名称 但是,如果希望在容器控件中获得所有文本框的数组,如表单,也可以使用LINQ: string[] board = new string[9]; for (var i = 0; i &l

但这将返回“textBox1.Text”。如何使textbox.Text语句与for循环“兼容”?

您没有告诉我们您使用的API是什么。 Asp.net?WPF?Windows窗体

在Asp.net中,可以使用FindControl方法


如果希望在某个时候维护代码,请使用更有意义的控件名称。业务逻辑不应依赖于控件名称

但是,如果希望在容器控件中获得所有文本框的数组,如表单,也可以使用LINQ:

string[] board = new string[9];
for (var i = 0; i < 9; i++)
{
    board[i] = ((TextBox)this.FindName("textBox" + i)).Text;
}
如果您只想获取1-9中的文本框:

string[] board = this.Controls.OfType<TextBox>()
    .Where(txt => txt.Name.StartsWith("textBox"))
    .Select(txt => txt.Text)
    .ToArray();
试试这个

var txtNames = Enumerable.Range(1, 9).Select(i => "textBox" + i);
string[] board = this.Controls.OfType<TextBox>()
    .Where(txt => txtNames.Contains(txt.Name))
    .Select(txt => txt.Text)
    .ToArray();

因此,您有9个文本框,希望将它们的文本写入数组?通过此操作,我得到以下结果:“FindControl”名称在当前上下文中不存在。我是否必须以某种方式“添加”此方法?我对C Sharp很陌生。@Ben你在哪里调用这个方法?@Ben这是ASP.NET see还是WPF或WinForms之类的?在许多技术中都有文本框。@JeppeStigNielsen你说得很对。我们没有问这个。如何调用方法?我使用的是Visual Studio 2013。这个答案假设问题是关于Windows窗体的,我相信这是一个很好的假设。@MartinLiversage:我的经验告诉我,如果不提到这项技术,那就是winforms。但是,这种方法也适用于ASP.NET等。您需要将名称替换为Id。
string[] board = new string[9];
for (var i = 0; i < 9; i++)
{
    board[i] = ((TextBox)this.FindName("textBox" + i)).Text;
}
string[] board = this.Controls.OfType<TextBox>()
    .Where(txt => txt.Name.StartsWith("textBox"))
    .Select(txt => txt.Text)
    .ToArray();
var txtNames = Enumerable.Range(1, 9).Select(i => "textBox" + i);
string[] board = this.Controls.OfType<TextBox>()
    .Where(txt => txtNames.Contains(txt.Name))
    .Select(txt => txt.Text)
    .ToArray();
string[] arr= new String[3];
        for (int i = 0; i <= 2; i++)
        {
            TextBox testTextBox = (TextBox)this.Controls["textBox" + i.ToString()];
            arr[i] = testTextBox.Text;
        }