C#将变量放在语句中

时间:2014-04-09 08:53:25

标签: c# arrays for-loop

 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循环?

3 个答案:

答案 0 :(得分:5)

您没有告诉我们您使用@Jeppe Stig Nielsen评论的API。 Asp.netWPFWindows 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;
        }