Laden...

Gemeinsamer EventHandler für Keypress UND Click!

Erstellt von Gumba vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.238 Views
G
Gumba Themenstarter:in
28 Beiträge seit 2010
vor 13 Jahren
Gemeinsamer EventHandler für Keypress UND Click!

Hallo Leute,
ich habe mal wieder ein kleines Problem, für das ich keine Lösung finde.
Ich habe eine richTextBox mit einem KeyDownEvent, welche bei Enter gelöscht werden soll. Da ich dieses Löschen jedoch auch auf einem Button liegen habe hab ich mir gedacht, dass man theoretisch ja die beiden Events zusammenpacken könnte. Gesagt getan. Mein Problem liegt jetzt leider darin, dass ich KeyDown abfragen muss und er nur bei Enter löschen soll. Ich habe folgenden Funktionskopf:

private void senden(object sender, EventArgs e)

EventArgs e wird zu KeyEventArgs gecastet, damit ich den Key auslesen kann. Außerdem werden beide Controls via if abgefragt:

if ((((KeyEventArgs)e).KeyCode == Keys.Enter ||  sender == enterPic)

Mein Problem ist folgendes: Wenn ich sender zu Button caste sagt er mir bei ausführung, wenns über die rtb geht: rtb kann nicht zu button gecastet werden. Also hab ich es mir dem puren object sender versucht, was augenscheinlich auch klappt, nur leider sagt er mir dann bei klicken auf den button, dass MouseEventArgs nicht zu KeyEventArgs gecastet werden können. 😦
Das jeweils andere Control blockiert also quasi die if-abfrage für das andere Control. Gibt es da eine möglichkeit dies zu umgehen?
Und ja ich würde die Funktionen gerne zusammenlegen, da beide extrem lang sind und im grunde das selbe drinsteht 😉

Mfg
Gumba

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Gumba,

EventHandler mit unterschiedlichen EventArg-Typen kann und sollte man nicht zusammenfassen. Du kannst aber aus beiden EventHandlern eine eigene gemeinsame Methode aufrufen (die die ggf. benötigten Parameter direkt bekommt und nicht per EventArgs).

herbivore

G
Gumba Themenstarter:in
28 Beiträge seit 2010
vor 13 Jahren

ich denke so werde ich es machen müssen... schade eigentlich. würde vieles vereinfachen 😉
Aber danke für die schnelle Antwort

Mfg
Gumba