C# 获取动态创建的文本框的值

C# 获取动态创建的文本框的值,c#,winforms,dynamic,textbox,C#,Winforms,Dynamic,Textbox,我现在有点为难,我创建了一段代码,创建了4个文本框,并在运行时将它们添加到一个表布局中(下面的代码),但我正在努力从中获取文本,我尝试从中获取值,就像您所做的那样string s=TxtBox1.text.ToString()但它只是得到一个空引用,然后我尝试了txt.Text.ToString()这只是从创建的最后一个文本框中获取文本 private void button2_Click(object sender, EventArgs e) { int coun

我现在有点为难,我创建了一段代码,创建了4个文本框,并在运行时将它们添加到一个表布局中(下面的代码),但我正在努力从中获取文本,我尝试从中获取值,就像您所做的那样
string s=TxtBox1.text.ToString()但它只是得到一个空引用,然后我尝试了
txt.Text.ToString()
这只是从创建的最后一个文本框中获取文本

   private void button2_Click(object sender, EventArgs e)
    {
        int counter;
        for (counter = 1; counter <= 4; counter++)
        {
            // Output counter every fifth iteration
            if (counter % 1 == 0)
            {
                AddNewTextBox();
            }
        }
    }

    public void AddNewTextBox()
    {
        txt = new TextBox();
        tableLayoutPanel1.Controls.Add(txt);
        txt.Name = "TxtBox" + this.cLeft.ToString();
        txt.Text = "TextBox " + this.cLeft.ToString();
        cLeft = cLeft + 1;
    }
private void按钮2\u单击(对象发送者,事件参数e)
{
整数计数器;

对于(counter=1;counter此代码从tableLayoutPanel1中选取textbox1,将其从控件强制转换为TextBox,并获取文本属性:

string s = ((TextBox)tableLayoutPanel1.Controls["TxtBox1"]).Text;
如果需要所有文本框,请在文本框上迭代:

string[] t = new string[4];
for(int i=0; i<4; i++)
    t[i] = ((TextBox)tableLayoutPanel1.Controls["TxtBox"+(i+1).ToString()]).Text;
string[]t=新字符串[4];
对于(inti=0;i您可以尝试

    var asTexts = tableLayoutPanel1.Controls
            .OfType<TextBox>()
            .Where(control => control.Name.StartsWith("TxtBox"))
            .Select(control => control.Text);
在文件的开头。 当做
Daniele。

很棒的东西,我与我尝试的一些东西非常接近,我成功地在不使用强制转换的情况下获得了第一个代码块。出于某种原因,我决定我走错了路,如果
表格布局
也能动态创建呢
    Using System.Linq;