[C#] Blokowanie KeyPress

1

Witam, wie ktoś może dlaczego naciśnięcie 'ctrl+z' w mojej kontrolce powoduje wygenerowanie (oprócz keyDown które zamierzam obsłużyć) zdarzenie keypress ze strzałką (kod = 26) jako wciśnięty klawisz? I jak temu zapobiec...

0

Kod 26 odpowiada naciśnięciu Ctrl + Z, więc nie ma w tym nic dziwnego:
http://en.wikipedia.org/wiki/Control-Z
http://www.scotek.demon.co.uk/ascii.html

0

Pamietaj, ze ctrl+z to nie jeden kod a zestaw 2 kodow. Dla normalnego klawisza zestaw to zwykle 0 + kod wlasciwy. Dla kombinacji i np. klawiszy funkcyjnych to kod + kod. Ten blad polega zwykle na tym, ze nie sprawdzasz pierwszego, a drugi jest taki sam dla innego scenariusza.

1

Hmm... A jest jakiś sposób żeby temu zapobiec? Tzn żeby po obsłużeniu tego w KeyDown nie wywoływać już KeyPress? (Myślałem o nadpisaniu IsInputKey - ale to nic nie da).

e: Nadpisałem IsInputChar :) Ale to i tak nic nie daje :/

e2: Można tak brutalnie, tzn if(e.KeyChar == 26) return; ale jeśli tylko się da wolałbym to zrobić inaczej...

0

protected override void OnKeyPress(KeyPressEventArgs e)
{
if (e.KeyChar != 26)
{
base.OnKeyPress(e);
}
}

1

@up: twój kod = właśnie "if(e.KeyChar == 26) return;". Tak czy inaczej dzięki za pomoc, chyba właśnie tak zrobię.

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