我有一个应用程序使用PreviewKeyDown
来捕获 CTRL X 击键(其中X
是任何字母)沿着以下行: / p>
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control) {
switch (key) {
case Key.A: keyStroke = 0x01; break;
case Key.B: keyStroke = 0x02; break;
:
因为似乎没有退格按键,我正在PreviewTextInput
中捕获它(以及非 CTRL 按键,以避免尝试映射键手动字符):
private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e) {
Char ch = e.Text.ToCharArray()[0];
if ((ch >= (Char)0x01) && (ch <= (Char)0x7e)) {
// Do something with character.
}
}
但是,我需要能够按 CTRL BACKSPACE 来捕获用户。我很茫然,因为PreviewKeyDown
似乎不知道退格,TextCompositionEventArgs
事件似乎没有关键状态(如CTRL
或ALT
)。
拦截 CTRL BACKSPACE 的最佳方式(或者,实际上,任何方式)是什么?
答案 0 :(得分:2)
要检测退格键,您需要使用Key枚举的Key.Back值。
例如:
Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control) {
switch (key) {
case Key.A: keyStroke = 0x01; break;
case Key.B: keyStroke = 0x02; break;
case Key.Back: // Do something
break;
}
}