C# EvenHandler für alle TextBoxen

hallo zusammen,
ist es möglich in C# (Visual Studio 2008 Express) einen EventHandler mit dem Element TextBox zu verknüpfen, anstatt jede erstellte TextBox einzeln zu verknüpfen?

zurzeit mach ich das so:

http://pastebin.com/VG347jxJ

Bei dem verlinkten Code ist es halt nur so, dass jedesmal wenn eine TextBox erstellt wird, ich im Konstruktor das Click-Event der jeweiligen Instanz von TextBox erst mit der Methode „TXTClick“ verknüpfen muss.

Ich möchte also das jede TextBox bei generierung automatisch ein Click-Event besitzt das mit der Methode „TXTClick“ verknüpft ist.

Viele Grüße

Friendly

Hallo Friendly

Du musst wohl schon jeder Textbox einzeln den Click-Event zuordnen. Du könntest es allerdings vereinfacht in einer foreach-Schleife erledigen:

foreach (Control control in form.Controls)
{
if (control.GetType() == typeof(TextBox))
{
((TextBox)control).Click += new System.EventHandler(this.TXTClick);
}
}

Viele Grüsse
Marion

meinst du vllt. eher ein focus-event? oder was ist, wenn der benutzer nicht reinklickt, sondern per tabulator hinnavigiert?

Hallo,

du kannst z.B. im FormLoad durch die Objekte des Forms schleifen und den Eventhandler mit allen Textboxen programmatisch verknüpfen.

Als Beispiel:

  • mache ein neues Windows Forms Projekt
  • ziehe auf die Oberfläche 3 Textboxen.
  • Im FormLoad machst du folgendes:

private void Form1_Load(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
{
if (ctrl.GetType() == typeof(TextBox))
{
ctrl.Click += new System.EventHandler(this.TextBoxes_Click);
}
}
}

Zusätzlich legst du den folgende Eventhandler an:

private void TextBoxes_Click(object sender, EventArgs e)
{
MessageBox.Show(this, ((TextBox)sender).Name + " was clicked", „Test“);
}

Beim Klick in jede Textbox wird in einer MessageBox der Name der Textbox, in die geklickt wurde, ausgegeben.

Solltest du noch Fragen haben, melde dich bitte.

Viele Grüße
René