c # / winforms: горячие сочетания клавиш приложения, за исключением редактируемых элементов управления - PullRequest
1 голос
/ 11 мая 2009

в моем приложении c # / winforms я хотел бы сделать что-то вроде клавиатурных сокращений всего приложения, которые должны запускаться где угодно, кроме случаев, когда фокус находится в элементе управления, где пользователь может редактировать текст, например текстовое поле.

В настоящее время я перезаписываю эту функцию, чтобы сделать это.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData);

как добавить к этому исключение, чтобы оно не срабатывало, когда пользователь находится в редактируемом элементе управления?

спасибо!

1 Ответ

1 голос
/ 11 мая 2009

Я вижу 2 решения здесь.

1) в каждом редактируемом элементе управления обрабатывать все события клавиатуры, а в объекте eventArgs установить для свойства Handled значение true;

e.Handled = true;

2) перед выполнением широкого сочетания клавиш найдите элемент управления, имеющий фокус, и, если это TextBox, проигнорируйте его. Вероятно, в каждой форме есть метод, чтобы сказать, какой элемент управления имеет фокус.

Второй вариант чище. Я не даю код, потому что у меня сейчас нет открытой Visual Studio, но если вам нужен более конкретный код, вы можете спросить.

PS: здесь, я сделал для вас поиск в Google: Как получить FOcused Control?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...