TextBox KeyDown Event auslösen
-
Hallo,
ich möchte gerne das Textbox KeyDown Event manuell im Code auslösen. Wie stell ich das am Besten an? Ich schätze mal das funktioniert mit Invoke, aber welchen Delegaten muss ich übergeben?
Kann mir vielleicht jmd einen Tipp geben?Vielen dank
-
Man keine Events von außerhalb des Controls wo sie definiert werden auslösen, genau das unterscheidet Events von normalen Delegates.
-
Achso, wofür braucht man denn dann invoke()? Für eigene Delegaten?
-
Mit Invoke kann man Funktionen innerhalb eines anderen Threads ablaufen lassen.
Konkret gehts meist um Control.Invoke (die Funktion bekommen ja alle Steuerelemente unter Windows Forms vererbt). Du hast irgend ne schöne Funktion gebastelt die dir in nem extra Thread von mir aus die Dateinamen aus nem Ordner ausliest, nun willst du die in ne ListBox schreiben aus deiner Funktion aus und schon krachts. Du darfst aus Controls nur innerhalb des GUI Threads zugreifen, sprich der Thread der die Controls erzeugt hat. Durch deinen extra Thread geschieht des nicht mehr, also gibts ne Exception. Um das nun zu umgehen, kann man in dem Beispiel ne Funktion schreiben "aktualisiereListBox(sring dateiname)" die den Dateinamen in die ListBox schreibt und diese Funktion rufst du mit Control.Invoke auf. Damit wird die Funktion dann im Kontext des GUI Threads ausgeführt und nicht in deinem extra Thread, und schon klappt alles.Das hat absolut nichts mit Events zu tun.
-
Vielen Dank für die Hilfe!
Sehr aufschlussreich...!Vielleicht in die FAQ? Da steht ja noch nicht so viel...