2016-12-04 3 views
-1

Ich erstelle derzeit eine kleine Anwendung, in der ich mehrere textBox-Steuerelemente an ein Panel anlege, abhängig davon, wie viele Benutzer erstellt werden sollen. Danach möchte ich den Text dieser Textbox holen aber dafür benötige ich den Contoll Name. Vielleicht kann einer von euch mir sagen, wie ich die Kontrollnamen jeder erstellten TextBox herausfinden kann.Abrufen des Controll.Name des dynamisch erstellten Textfelds

Danke für Ihre Hilfe.

+0

Warum legen Sie die Namen der Textfelder nicht explizit fest, wenn Sie sie erstellen? Obwohl ich nicht sicher bin, warum Sie auf sie mit Namen zugreifen müssen, wenn Sie nicht einmal wissen, wie viele es gibt. Zählen Sie einfach die untergeordneten Elemente des Bereichs auf, um die Textfelder zu erhalten. Oder speichern Sie sie in einem Array, wenn Sie sie erstellen und über das Array darauf zugreifen. – itsme86

Antwort

0

Ich bin ziemlich sicher, dass Sie jede Textbox anders behandeln werden. Zum Beispiel ist der Textwert eines Textfelds für den Vornamen, der nächste für den Nachnamen usw. Sie brauchen also nicht nur den Namen der Textbox, sondern auch etwas anderes. Hier ist ein Code, wo ich einige Textfelder in einer Schleife erzeuge. Ich gebe ihnen Namen und dann füge ich ihnen einen Event-Handler hinzu. Im Handler treffe ich die Entscheidung, was mit dem für den Text eingegebenen Wert geschehen soll. Sie sollten Ihren Textfeldern je nach Ihren Anforderungen aussagekräftigere Namen geben.

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

Dieser Code nimmt textbox1 von tableLayoutPanel1, wirf es von Control TextBox und nimmt Text Eigenschaft:

string s = ((TextBox)tableLayoutPanel1.Controls["TxtBox1"]).Text; 

wenn Sie sie benötigen alle, dann area per iterieren:

string[] t = new string[4]; 
for(int i=0; i<4; i++) 
    t[i] = ((TextBox)tableLayoutPanel1.Controls["TxtBox"+(i+1).ToString()]).Text; 
Verwandte Themen