2010-12-28 18 views
0

Ich habe ein Problem wie folgt: Haben Sie eine Funktion, wo ich dynamisch TabPage-Objekt und TextBox-Steuerelement darauf erstellen.Textchanged Ereignis für dynamisch erstellen Textfeld

private void Create() 
    { 
     TabPage zakladkaTabControl = createTabPage(); 
     TextBox TB = new TextBox(); 

     TB.TextChanged += new EventHandler(TB_TextChanged); 
    } 

Jetzt muss ich TabPage Namen dynamisch ändern, wenn ich etwas in mein TextBox-Steuerelement schreibe. Ich habe Funktion, die Inhalt der TextBox-Steuerelement unterstützt Wechsel:

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     ((TabPage)sender).Text = ((TextBox)sender).Text; 
    } 

Es funktioniert nicht, weil Funktion nur auf das TextBox-Objekts aufrufen und nicht dem Text und TabPage. Ich kenne eine Lösung für statisch, aber dynamisch erstellte Objekte? Für mehrere Stunden kann ich keine Lösung finden.

Jede Hilfe würde am meisten geschätzt werden.

+0

Sie registrieren TB_TextChanged und zeigen Code für textBox1_TextChanged-Methode. Gibt es ein Missverhältnis? Soln von Hans sollte funktionieren, aber ich bin mir nicht sicher, was genau ist die Frage? –

Antwort

2
var box = (TextBox)sender; 
var page = (TabPage)sender.Parent; 
page.Text = box.Text; 
+0

Das würde funktionieren .. – Dienekes

1

die Eltern TabPage zu erhalten, Sie die Steuerungshierarchie gehen können, bis Sie es finden:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    var tb = (TextBox)sender; 
    Control ctl = tb.Parent; 
    while (ctl != null && !(ctl is TabPage)) 
    { 
     ctl = ctl.Parent; 
    } 

    if (parent != null) 
    { 
     var tp = (TabPage)parent; 
     // Change the TabPage name here 
    } 
} 

Alternativ könnten Sie zakladkaTabControl eine Eigenschaft der Klasse eher als eine lokale Variable, so dass Sie können von der textBox1_TextChanged-Methode darauf verweisen.

Verwandte Themen