2010-10-12 35 views
0

我有一個使用PreviewKeyDown一個應用程序捕獲CTRLX擊鍵(其中X是任何字母)沿着線:如何捕獲WPF/C#中的CTRL-BACKSPACE?

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

但是,我需要能夠捕獲用戶按下CTRLBACKSPACE。我很困惑,因爲PreviewKeyDown似乎並不知道backspace,並且TextCompositionEventArgs事件似乎沒有攜帶關鍵狀態(如CTRL或​​)。

什麼是最好的方式(或者更確切地說,任何方式)攔截CTRLBACKSPACE

+1

PreviewKeyDown檢測回退給我。如果我在你的switch語句中添加一個Key.Back的情況,它就會像我期望的那樣被調用。 – 2010-10-12 11:31:14

+0

好的謝謝。我添加了一個答案。而且,我確定那把鑰匙的命名也讓我知道了。 :) – 2010-10-12 12:14:20

回答

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