Benutzer mit den meisten Antworten
c# eine Eventhandler für alle TextBoxen

Frage
-
Hallo zusammen,
ist es möglich in C# 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- Verschoben Robert BreitenhoferModerator Freitag, 7. Dezember 2012 16:01 Visual C# (aus:Visual Studio)
Antworten
-
Hallo zusammen,
Ich möchte also das jede TextBox bei Generierung automatisch ein Click-Event besitzt das mit der Methode "TXTClick" verknüpft ist.
Dann muss man eben eine eigene Klasse von TextBox ableiten, OnClick überschreiben und dort die gewünschte Logik ausführen. Alle MyTextBox-Instanzen werden dieses Verhalten automatisch aufweisen, egal ob man sie über die Toolbox (nach erfolgreicher Kompilierung erscheint ja in der Toolbox auch ein Symbol für das neue MyTextBox-Control) oder über den Editor erstellt.
class MyTextBox : TextBox { protected override void OnClick(EventArgs e) { base.OnClick(e); double i; if (!Double.TryParse(Text, out i)) Text = ""; } }
Über aspektorientierte Entwicklung ließe sich das Ganze ebenfalls realisieren (z.B. mit PostSharp), ob man ein solches Vorgehen aber begrüßt bleibt nicht zuletzt Geschmackssache.
Gruß
Marcel- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Dezember 2012 16:00
- Als Antwort markiert Robert BreitenhoferModerator Montag, 10. Dezember 2012 09:03
Alle Antworten
-
Hallo, nein das ist nicht möglich. Der Handler muss ja irgendwo im Code stehen und VS hat kein Tool um automatisch das ganze zu generieren. Aber eigentlich dürfte es doch nicht alzulange dauern deine Textboxen alle zu verknüpfen, oder? Es ist schließlich nur eine Zeile pro TextBox.
Koopakiller [kuːpakɪllɐ] - http://koopakiller.ko.ohost.de/
-
Hallo zusammen,
Ich möchte also das jede TextBox bei Generierung automatisch ein Click-Event besitzt das mit der Methode "TXTClick" verknüpft ist.
Dann muss man eben eine eigene Klasse von TextBox ableiten, OnClick überschreiben und dort die gewünschte Logik ausführen. Alle MyTextBox-Instanzen werden dieses Verhalten automatisch aufweisen, egal ob man sie über die Toolbox (nach erfolgreicher Kompilierung erscheint ja in der Toolbox auch ein Symbol für das neue MyTextBox-Control) oder über den Editor erstellt.
class MyTextBox : TextBox { protected override void OnClick(EventArgs e) { base.OnClick(e); double i; if (!Double.TryParse(Text, out i)) Text = ""; } }
Über aspektorientierte Entwicklung ließe sich das Ganze ebenfalls realisieren (z.B. mit PostSharp), ob man ein solches Vorgehen aber begrüßt bleibt nicht zuletzt Geschmackssache.
Gruß
Marcel- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Dezember 2012 16:00
- Als Antwort markiert Robert BreitenhoferModerator Montag, 10. Dezember 2012 09:03
-
Hallo FlorianM83,
Hat Dir die Antwort geholfen?
Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo,
du kannst auch eine Style für die TExtbox angeben, in dem du dann mit einem EventSetter den Handler festlegst. Ohne Key wird der Style automatisch auf alle tbs im Projekt übernommen.
<Style TargetType="TextBox"> <EventSetter Event="Click" Handler="TextBox_Click"></EventSetter> </Style>
- Bearbeitet Not a Number Freitag, 7. Dezember 2012 16:12
-
Hallo FlorianM83,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.