如何在WPF / C#中捕获CTRL-BACKSPACE?

时间:2010-10-12 08:52:43

标签: c# wpf keyboard-events

我有一个应用程序使用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事件似乎没有关键状态(如CTRLALT )。

拦截 CTRL BACKSPACE 的最佳方式(或者,实际上,任何方式)是什么?

1 个答案:

答案 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;
    }
}