C#:在WF文本框中显示字符串变量
本文关键字:显示 字符串 变量 文本 WF | 更新日期: 2023-09-27 17:57:42
string[] board = new string[9];
for (var i = 0; i < 9; i++)
{
board[i] = (textBox1.Text);
}
我试图制作一个循环,将文本框的文本放入数组中,但我不知道如何将I变量放入'textBox中。文本"语句。我试过这个:
board[i] = ("textBox" + i + ".Text");
但这会返回"textBox1.Text"。我该如何制作文本框。文本语句是否与for循环"兼容"?
正如@Jeppe Stig Nielsen评论的那样,您没有告诉我们您使用的是什么API。Asp.net
?WPF
?Windows Forms
?
在Asp.net
中,可以使用FindControl
方法
string[] board = new string[9];
for (var i = 0; i < 9; i++)
{
board[i] = ((TextBox)FindControl("textBox" + i)).Text
}
在WPF
中,可以使用FindName
方法:
string[] board = new string[9];
for (var i = 0; i < 9; i++)
{
board[i] = ((TextBox)this.FindName("textBox" + i)).Text;
}
如果您想在某个时候维护代码,请使用更有意义的控件名称。业务逻辑不应依赖于控件名称。
然而,如果你想在一个容器控件中获得一个所有文本框的数组,比如表单,你也可以使用LINQ:
string[] board = this.Controls.OfType<TextBox>()
.Where(txt => txt.Name.StartsWith("textBox"))
.Select(txt => txt.Text)
.ToArray();
如果您只想从1-9:中提取文本框
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;
}