У меня есть приложение, которое использует PreviewKeyDown
для захвата CTRL X нажатий клавиш (где X
- любая буква) вдоль строк:
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 ?