mal stark vereinfacht (Prinzipbeispiel) das Problem - ein Form und ein button. In buttonclick läuft eine Schleife mit Application.doevents.
die Schleife soll verlassen werden mit key.up.
der keydown-(auch keypress)event wird schon for dem Application.doevents verarbeitet und kommt dort nicht an, bzw ist zuvor erledigt.
Wodurch die keydown Funktion nicht angesprochen wird.
Bei einer leeren Form, ohne Buttons, geht es, da nur das Formular den Event bekommt.
Was muss ich tun ?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void button2_Click(object sender, System.EventArgs e) { for (int i=1; i<1000; i++) { Application.DoEvents(); button1.Left = i; Thread.Sleep(speed); } } |
Es geht nicht :
C#-Quelltext
1: 2: 3: 4: 5:
| protected override void OnKeyDown(KeyEventArgs kea) { if (kea.KeyCode == Keys.Up) Close(); } |
auch nicht:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyCode == Keys.Down) Close(); e.Handled = true; } |
Das das alles über timer, abfragen und weis ich wie gehen würde ist klar, aber ich muss doch einen Tastaturevent benutzen können ?
Moderiert von raziel: C#-Tags hinzugefügt