2016-12-04 49 views
-1

我目前正在创建一个小应用程序,我创建多个文本框控件到一个面板,具体取决于想要创建多少用户。 之后,我想获取这个文本框的文本,但为此我需要Contoll名称。也许你可以告诉我如何找出每个创建的TextBox的控制名称。获取动态创建的文本框的Controll.Name

感谢您的帮助。

+0

为什么不在创建文本框时明确指定文本框的名称?虽然,我不确定为什么你甚至不知道为什么你需要通过名字访问它们。只需枚举面板的子项即可获取文本框。或者在创建它们并通过数组访问它们时将它们存储在数组中。 – itsme86

回答

0

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

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; 
    } 
} 
0

此代码采用主从tableLayoutPanel1textbox1,从控制投它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;