string[] board = new string[9];
for (var i = 0; i < 9; i++)
{
board[i] = (textBox1.Text);
}
我试图创建一个循环,将文本框的文本放在数组中,但我无法弄清楚如何将i变量放入&text;文本框中。声明。我试过这个:
board[i] = ("textBox" + i + ".Text");
但这会返回&#39; textBox1.Text&#39;。如何使textbox.Text语句兼容&#39;与for循环?
答案 0 :(得分:5)
您没有告诉我们您使用@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;
}
答案 1 :(得分:2)
如果要在某个时间维护代码,请使用更有意义的控件名称。业务逻辑不应该依赖于控件名称。
但是,如果你想在容器控件中获得所有文本框的数组,就像表单一样,你也可以使用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();
答案 2 :(得分:0)
试试这个,
string[] arr= new String[3];
for (int i = 0; i <= 2; i++)
{
TextBox testTextBox = (TextBox)this.Controls["textBox" + i.ToString()];
arr[i] = testTextBox.Text;
}