Entwickler-Ecke
Basistechnologien - MouseEvent und KeyEvent verbinden?!
Max064 - Mo 09.08.10 13:43
Titel: MouseEvent und KeyEvent verbinden?!
Hi,
ich benutze verschiedene MouseEvents in einem Programm. Jedoch ist innerhalb eines MouseEventHandlers wichtig, ob eine bestimmte Tastaturtaste gedrückt ist oder nicht.
Bisherige Eventhandler:
C#-Quelltext
1: 2: 3: 4:
| private void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { ... } |
Wie kann ich innerhalb dieses EventHandlers abfragen, ob eine Taste gedrückt ist?
lg Max
Th69 - Mo 09.08.10 15:16
Die Sondertasten (Ctrl, Shift, Alt) kannst du über die statische Variable Control.ModifierKeys abfragen.
Andere Tasten kannst du im KeyUp/Down-Ereignis des Forms als lokale (bool)-Variable anlegen und abfragen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| private bool key_pressed = false;
void form_KeyDown(object sender, KeyEventArgs e) { if(e.Key == Keys.T) key_pressed = true; }
void form_KeyUp(object sender, KeyEventArgs e) { if(e.Key == Keys.T) key_pressed = false; }
void panel1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if(key_pressed) { ... } } |
Beachte: Die Eigenschaft 'KeyPreview' bei deiner Form sollte (bzw. muß) dann 'true' sein!
(bestimmte Sondertasten wie Tab, Return, ESC kannst du so jedoch nicht abfragen; da benötigst du dann andere Methoden wie z.B. IsInputKey()).
Max064 - Di 10.08.10 09:17
Ich bin über den Control.ModifierKeys gegangen. Funktioniert super! Danke.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!