#c# #wpf #keyboard #keyboard-shortcuts
#c# #wpf #клавиатура #сочетания клавиш
Вопрос:
Кажется, я не могу найти ключевые перечисления некоторых клавиш ниже. Я также прочитал это: http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx и до сих пор ничего не нашел (или, может быть, я это пропустил).
Вопросы :
- Какое ключевое перечисление клавиш в красной рамке на картинке выше?
Oemtilde
В данной ссылке есть какие-либо идеи, что это за ключ?
Спасибо.
(Мой язык программирования — C #, и я кодирую в WPF)
Ответ №1:
Я не думаю, что для этих ключей есть отдельные перечисления. Это Key.D1 to Key.D0
и Key.Oem3
(для tilda). Вы можете определить, какая из них была нажата, проверив Keyboard.Modifiers == ModifierKeys.Shift
в любой точке вашего кода.
т.е. если нажата клавиша is Key.D1
и Keyboard.Modifiers
is ModifierKeys.Shift
, это означает '!'
, что была нажата
Комментарии:
1. Просто убедитесь, что вы проверяете modifier с
(e.KeyboardDevice.Modifiers amp; ModifierKeys.Shift) == ModifierKeys.Shift
помощью , потому что одновременно может быть нажато более одной клавиши-модификатора.2. Какая разница, если я проверю модификаторы, используя, например,
if(Keyboard.IsKeyDown(Key.LeftCtrl)||Keyboard.IsKeyDown(Key.RightCtrl)){//Code}
? Это только для упрощения кода?
Ответ №2:
Как насчет запуска приложения, нажатия клавиши на клавиатуре и проверки значения KeyEventArgs.Key ?
private void MainWindow_OnKeyDown(object sender, KeyEventArgs e)
{
Console.WriteLine(e.Key);
}
Показывает Oem3 для tilda.
Комментарии:
1. Он всегда обнаруживает
LeftShift Something
, а не самоKey
имя. Или, может быть, именно так нам нужно получить к нему доступ, поскольку у него нет определенного имени?