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循环"兼容"?

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

正如@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;
}

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

然而,如果你想在一个容器控件中获得一个所有文本框的数组,比如表单,你也可以使用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;
        }