2016-12-04 74 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;