Eventhandler für Control-List
-
Hallo,
ich füge einem Fenster variable Controls hinzu. Diese werden über eine Schleife in Listen eingefügt, also eine Liste für NumericUpdown1, eine für NumericUpDown2 und eine für Textbox1.
Dann füge ich in dieser Schleife die Controls zur Controlsliste hinzu:
this.Controls.Addrange(new Control[] {NumericUpDown1[0], NumericUpDown2[0], Textbox1[0]})
Hat mir jemand einen Tipp, wie ich jetzt für diese Controls Events implementiere? Bisher hab ich immer über die GUI das jeweilige Event angeklickt.
Da es immer die gleichen Überprüfungen werden, könnte man ja auch für alle in der Liste dieses Event in einem schreiben, wenn das geht?
Hoffe, ich habe mich verständlich machen können
Beste Grüße
Solick
-
Genauso wie es der Designer auch macht (schau einfach mal in die .designer.cs- Datei):
{ ... control.Click += Control_Click; } void Control_Click(object sender, EventArgs e) { Control control = sender as Control; if(control != null) { control.Text = "geklickt"; } }
Du mußt jetzt nur die entsprechenden Namen anpassen, d.h.
- den Namen des Events (Click)
- den Namen deiner Event-Methode (Control_Click)
- die passenden Event-Argumente (EventArgs)
- den Typ deines Controls (Control)s.a. http://www.mycsharp.de/wbb2/thread.php?threadid=26116 (Informationen zu Events)
(das dort genannte OpenBook kann ich bestens empfehlen)
-
sorry für die späte Reaktion und erstmal danke.
Kann ich denn dann einfach eine Methode für eine Liste schreiben, also in etwa so:
{ ... control.Click += Control_Click[i]; } void Control_Click[i](object sender, EventArgs e) { Control control = sender as Control; if(control != null) { control.Text = "geklickt"; } }
-
Nimm das [i] weg dann passt es, denn bei jedem Click-Ereigniss wird das geklickte Steruerelement als sender-Parameter übergeben. Den Index des Steuerlementes erhälst du entweder, indem du den Index in die Tag-Eigenschaft schreibst und die dann in der Methode ausliest oder über die IndexOf-Funktion der Liste.