Есть ли какая-либо инфраструктура для реализации сочетаний клавиш в приложении Windows .NET .NET? И каковы наилучшие практики, о которых следует позаботиться, делая это?Внедрение сочетаний клавиш в приложении Windows .NET
ответ
Хотя нет очевидного способа предоставить клавиши ускорителя для команд не в меню, их не так уж сложно добавить. Существует пять основных этапов:
Определить перечисление ускорителя.
private enum Accelerators { Unspecified = 0, Home, Save, Print, Logout };
Создание хэш-таблицы содержат перечисляемые значения.
Hashtable _accelHash() = new Hashtable();
Создать класс для представления сочетания клавиш.
Загрузить таблицу с перечислением ключей.
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.H),
Accelerators.Home);
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.S),
Accelerators.Save);
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.P),
Accelerators.Print);
_accelHash.Add(new AcceleratorKey(Keys.Alt|Keys.X),
Accelerators.Logout);
Наконец, переопределить ProcessCmdKey и использовать переключатель заявление для отправки на правильный метод.
protected override bool ProcessCmdKey(ref Message msg,
Keys keyData)
{
...
}
В качестве альтернативы, для немного более сложный подход, вы могли бы Хеш карту для делегатов, которые были методы, которые вы хотели вызвать, до тех пор, как все они имели один и тот же метод подписи.
Here's a short article, который более подробно описывает шаги выше.
Общим способом реализации сочетаний клавиш является их обнаружение в случае клавиатуры, например KeyDown или KeyUp.
Пример
public void Form1_KeyUp(object sender,KeyEventArgs e)
{
if (e.Control && e.KeyData==Keys.A)
{
//handle ctrl+a
}
- 1. Настройка сочетаний клавиш на Windows
- 2. Приложение Windows для добавления сочетаний клавиш
- 3. Javascript: реализация сочетаний клавиш
- 4. Поиск сочетаний клавиш затмения
- 5. Добавление сочетаний клавиш в апплет
- 6. Присвоение незарегистрированных сочетаний клавиш/привязок клавиш
- 7. Создание пользовательских сочетаний клавиш в приложении linux c
- 8. Изменение сочетаний клавиш в Cinnamon не работает
- 9. Переопределение сочетаний клавиш на RichEditBox?
- 10. R блестящий - включение сочетаний клавиш?
- 11. Внедрение IBM.XMS в службе net net windows
- 12. iPhone/iPad приложение с помощью сочетаний клавиш?
- 13. Выполнение сочетаний клавиш на веб-странице
- 14. Список стандартных стандартных сочетаний клавиш для Windows-приложений?
- 15. Блокировка сочетаний клавиш с использованием C#
- 16. Ограничение сочетаний клавиш в редакторе TinyMCE
- 17. Захват сочетаний клавиш в iframe: фокусировка?
- 18. Изменение сочетаний клавиш в RAD Studio 2010
- 19. Сопоставление сочетаний клавиш Visual Studio в Xcode
- 20. Добавление сочетаний клавиш в моей домашней оболочке
- 21. Перечисление 2 сочетаний клавиш словаря в python
- 22. Инструмент для просмотра/планирования сочетаний клавиш?
- 23. Внедрение/развертывание пользовательского шрифта в .NET-приложении
- 24. Указание порядка сочетаний клавиш быстрого запуска
- 25. Перехват/отключение сочетаний клавиш (например, CMD + q)
- 26. Кодовое обозначение Юникода для сочетаний комбинаций клавиш
- 27. Eclipse - Список сочетаний клавиш по умолчанию
- 28. Создание сочетаний клавиш для вашего приложения HTML5?
- 29. Изменение сочетаний клавиш для отладки Visual Studio
- 30. Tkinter: проблема с созданием сочетаний клавиш