获取Dynamic创建的TextBox的控制



我当前正在创建一个小应用程序,在该应用程序中,我根据要创建的用户数量来创建多个TextBox控件。之后,我想获取此文本框的文本,但为此,我确实需要Contoll名称。也许你们中的一个可以告诉我如何找到每个创建的文本框的控制名称。

感谢您的帮助。

我很确定您会以不同的方式对待每个文本框。例如,一个文本框的文本值将用于名字,姓氏的下一个名称等。因此,您不仅需要文本框的名称,还需要为每个文本框做不同的事情。这是一些代码,我在循环中生成一些文本框。我给他们姓名,然后在他们中添加一个事件处理程序。在处理程序中,我决定如何处理文本输入的值。您应该根据您的需求给您的文本框更多描述性名称

public Form1()
{
    InitializeComponent();
    for (int i = 0; i < 5; i++)
    {
        var txtBox = new TextBox();
        txtBox.Name = "TextBox" + i;
        txtBox.TextChanged += TxtBox_TextChanged;
        this.tableLayoutPanel1.Controls.Add(txtBox);
    }
}
private void TxtBox_TextChanged(object sender, EventArgs e)
{
    var txtBox = sender as TextBox;
    string firstName = string.Empty;
    string lastName = string.Empty;
    switch (txtBox.Name)
    {
        case "TextBox1":
            firstName = txtBox.Text;
            break;
        case "TextBox2":
            lastName = txtBox.Text;
            break;
        // more cases here but you get the point...
        default:
            break;
    }
}

此代码从tableLayoutPanel1选择textbox1,将其从控制到TextBox并拿走Text属性:

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;

最新更新