Я искал, чтобы узнать значения для < и> ниже System.Windows.Forms.Keys
, но я могу найти только OemOpenBrackets
и OemCloseBrackets
. Может кто-нибудь, пожалуйста, помогите мне?Перечисление меньше, чем перечисление ключей в C#
ответ
Перечисление Keys определяет виртуальные коды клавиш, а для угловых скобок нет. Угловые скобки могут отображаться на разных клавишах для разных раскладок клавиатуры, так что нет easy надежный способ преобразования виртуального ключа в символ.
Лучшим вариантом является использование KeyPress событие (как это было предложено Hans), и сравнить KeyPressEventArgs.KeyChar
собственность непосредственно с '<'
или '>'
символов.
private void MyKeyPressHandler(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '<')
{
MessageBox.Show("Yippee");
}
}
Если по каким-то причинам вы вынуждены использовать код ключа от KeyDown события, то ваш код не будет работать для различных раскладок клавиатуры.
К примеру, на моей клавиатуре < и> находятся на запятая и период ключей, я мог бы использовать Oemcomma
и OemPeriod
, в сочетании с Shift
:
if (e.KeyCode == Keys.Oemcomma && e.Shift)
{
MessageBox.Show("Works for certain keyboards.");
}
Он должен быть в форме «if (e.KeyCode == Keys.Oemcomma && Keys.Shift)», но он не позволяет использовать два значения для e.keycode. Должен ли я просто сделать другое заявление if внутри первого? – Mercifies
@Mercifies Я не понимаю ваш комментарий. – Ergwun
Он выдает ошибку, говоря, что && нельзя применить к операндам типа bool – Mercifies
Вы делаете это неправильно, используйте KeyPress событие вместо KeyDown/Up.
Не каждая раскладка клавиатуры в мире такая же, как ваша. Например, на немецком языке или French keyboard, < создается дополнительным ключом рядом с левой клавишей Shift, удерживая Shift и нажимая на эту клавишу. Только событие KeyPress надежно правильно распознает нажатие клавиши.
+1 Это лучшее решение, чем использование ключевого кода из события нажатия клавиши. – Ergwun
Если вы делаете это с помощью элемента управления WPF, вам нужно использовать событие PreviewTextInput. Я обнаружил это, пытаясь получить «[» на французской клавиатуре.
private void OnRichTextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Debug.WriteLine("text = " + e.Text);
Debug.WriteLine("sys txt = " + e.SystemText);
if (e.Text == "<") { /* do something */ }
}
Шон
- 1. Перечисление ключей C#, AltKey
- 2. C#: Перечисление ключей SessionState в окне QuickWatch
- 3. C++ перечисление
- 4. Перечисление всех ключей и значений
- 5. перечисление типа в C++
- 6. Перечислить перечисление в C++
- 7. Перечисление файлов в C#
- 8. Аннотация перечисление в C#
- 9. Перечисление ключей в кеше базы данных Django
- 10. Медленное перечисление ключей в машине Контейнер ключей RSA
- 11. Перечисление <> Разница Перечисление
- 12. Java перечисление и PostgreSQL перечисление
- 13. C-как перечисление в Java
- 14. Более быстрое перечисление: использование массива Перечисление
- 15. C# перечисление членства LDAP
- 16. Флаги, перечисление (C)
- 17. C++: перечисление перестановок строки
- 18. C#: круговая перечисление IEnumerable
- 19. C#: Размышляя перечисление имя
- 20. C перечисление различных компиляторов
- 21. Initialize перечисление C++
- 22. Visual C++ перечисление (CloseReason)
- 23. C++ синтаксис перечисление
- 24. Перечисление ключей реестра с его данными в C
- 25. Картирование Grails/заводное перечисление в Mysql перечисление
- 26. перечисление первичных ключей из словаря данных
- 27. Перечисление ключей среды с помощью VBScript?
- 28. параметр шаблона: перечисление, класс или перечисление класса
- 29. Перечисление в C для циклов
- 30. Перечисление исполняемых файлов в C
.NET действительно большой; если вы говорите об определенном классе, полностью квалифицируйте его. –