Выпуск
Странная проблема. У нас есть две формы: главное окно приложения и форма настроек. У главной формы KeyPreview установлено значение true, а к событию KeyUp присоединен метод. Это делается для того, чтобы окно настроек можно было открыть с помощью сочетания клавиш (ctrl-m):
private void MyShortcuts(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.M)
{
e.Handled = true;
e.SuppressKeyPress = true;
MySettings sett = new MySettings();
sett.Show();
}
}
Теперь этот бит работает просто отлично. Однако проблема в том, что, несмотря на установку свойств Handled и SuppressKeyPress в true , событие KeyUp все еще передается в MySettings
форма. Я проследил это до ControlNativeWindow.OnMessage
получения того, что кажется другим событием (его свойства Handled и SuppressKeyPress установлены в false), и передачи его в форму и ее сфокусированное управление.
Вопросы
- Прежде всего, почему событие проходит, несмотря на то, что .Net не дает этого сделать?
- Во-вторых, как я могу предотвратить запуск события?
Любые идеи будут оценены по достоинству, я сам исчерпал их.