KeyDown (Control + Klawisz) aktywuje również (Alt + Klawisz)

KeyDown (Control + Klawisz) aktywuje również (Alt + Klawisz)
S3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

Witam,

Przy wyborze zdarzenia KeyDown i instrukcji if (e.KeyCode == Keys.O && e.Control) { } procedura działa dla Ctrl + O, ale nie wiem dlaczego ten sam skrót aktywuje się również przy wciśnięciu Alt + O

Czyli działa dla Lewego i Prawego Ctrl oraz Prawego Alt

W jaki sposób wyłączyć prawy alt, który koliduje np. z uzyskaniem polskich znaków?

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
2

Prawy Alt (AltGr) to po prostu jest skrót do Ctrl+Alt.

Sprawdzaj czy jest naciśnięty dodatkowo alt i jeśli tak - to ignoruj (znaczy zrób e.Handled = false).

S3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

@Ktos: Dzięki! Działa w taki sposób, chyba, że masz lepszy pomysł na zapis?

if (e.KeyCode == Keys.O && e.Control) {
if (e.Alt) {
e.Handled = false; }
else {
SubMenuItem_Otworz.PerformClick(); }
` }

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
2

@szymonk3:
wystarczy zapewne if (e.KeyCode == Keys.O && e.Control && !e.Alt)
Ale najlepiej sprawdzać Modifiers bo jeszcze musiałbyś sprawdzić Shift:

Kopiuj
if (e.KeyCode == Keys.O && e.Modifiers == Keys.Control)

ten kod zadziała tylko przy wciśniętym Controlu, bez alta i shifta (bo wtedy Modifiers miałoby wartość Control | Alt albo Control | Shift)

S3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

@obscurity: Bardzo dziękuję za pomoc! Działa jak należy :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.