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

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?

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).

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(); }
` }

2

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

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)

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1