Autor Beitrag
squee1337
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 30.07.10 12:03 
Hallo zusammen,

Ich habe eine WinForm mit mehreren Textboxen die Daten aufnehmen.
Jetzt will ich für diese Textboxen ein Highlighting implementieren. Das ganze soll on_text_changed passieren.
Ich weiss, wie ich das für jede Textbox einzeln mache, aber bei 25 Textboxen ist das ne menge redundanter Code.

Gibts da ne Möglichkeit das ganze auf einen Eventhandler für alle textboxen zu beschränken?
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 30.07.10 12:19 
Hi,

ja, gibt es. Du hast einen Eventhandler, nennen wir ihn mal

ausblenden C#-Quelltext
1:
2:
3:
4:
textBoxes_TextChanged(object sender, EventArgs e)
{

}


So, nun kannst Du einfach im Designer für jede Textbox unter den Eigenschaften und bei den Ereignissen bei TextChanged diesen EventHandler zuweisen.

Oder die Zuweisungen im generierten Code des Designers vornehmen. Aber da sollte man eigentlich (und grade als Anfänger) nicht drin rumfummeln.

Gruss, Marko

Für diesen Beitrag haben gedankt: squee1337
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 30.07.10 12:22 
Hallo,

schau einmal in die Form.Designer.cs, wie der Designer es macht. Daran kannst du dich orientieren.

1. Baue den einheitlichen EventHandler:
ausblenden C#-Quelltext
1:
private void AllMyTextBoxesTextChanged(object sender, EventArgs e) { ... }					

2. Weise diesen EventHandler allen TextBoxen zu. Dies geschieht meistens im Konstruktor nach InitializeComponents, aber es kann später geschehen (nur früher kann und darf es nicht sein):
ausblenden C#-Quelltext
1:
2:
NameInput.TextChanged += AllMyTextBoxesTextChanged;
BirthPlaceInput.TextChanged += AllMyTextBoxesTextChanged;

3. Welche TextBox gerade bearbeitet wird, steht im Argument sender.
ausblenden C#-Quelltext
1:
2:
3:
4:
TextBox box = sender as TextBox;
if (box != null) {
   // mach was mit dieser TextBox
}


Gruß Jürgen

PS. Marko war schneller, dafür bin ich etwas ausführlicher. :D

Für diesen Beitrag haben gedankt: squee1337
squee1337 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 30.07.10 12:32 
Genau das hat mir zum Verständnis gefehlt! DANKE

Zitat:
3. Welche TextBox gerade bearbeitet wird, steht im Argument sender.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
TextBox box = sender as TextBox;
if (box != null
{
   // mach was mit dieser TextBox
}