2009-03-30 3 views
0

У меня есть приложение, написанное в C#, нацеленное на .NET Compact Framework 3.5, работающее в Windows CE. Я хотел бы предоставить пользовательский визуальный сигнал в модальном диалоговом окне, если пользователь пытается взаимодействовать со своим окном владельца, не закрывая сначала диалог.Ловушка мыши за пределами модального диалога

Возможно ли, чтобы модальный диалог получал уведомления о щелчках мыши в окне своего владельца? Окно владельца работает в полноэкранном режиме, поэтому достаточно будет ловить клики вне модального диалога в целом.

+0

Переопределить метод WndPrc, как показано [здесь] (http://stackoverflow.com/a/32480034/2362553) –

ответ

3

Вот как работает модальность. Когда диалоговое окно отображается в текстовом виде (CE или настольный Windows), это окно получает свой собственный внутренний насос сообщений. Это означает, что вы получаете сообщение (например, мышь вниз) за пределами вашего окна, насос отбрасывает его. Невозможно, чтобы насос послал это сообщение «вверх» цепи на другой насос (ну не без вас, чтобы вы сами сбрасывали оба насоса), возможно, да, но сложный, запутанный и вовсе не масштабируемый или ремонтируемый).

0

Возможно, вы можете использовать Control.Capture.

+0

Я не могу выполнить эту работу. Я установил свойство Capture формы true, прежде чем вызывать метод ShowDialog, но я не получаю никаких событий Click при нажатии вне диалогового окна. –

+0

Возможно ли, что форма должна быть видимой, чтобы иметь набор захвата? – dommer

+0

Я пробовал, чтобы форма была видна до установки свойства Capture, но все равно не повезло. Может быть, Windows CE quirk ... –

Смежные вопросы