Реагирование на нажатие клавиш и щелчок мышью на полностью прозрачной панели - PullRequest
2 голосов
/ 05 августа 2011

Я создал форму, развернутую на весь экран.

Внутри этой формы и размера, заполняющего всю форму, я поместил панель с цветом фона, установленным на Red.TransparencyKey формы имеет значение Red.

. Поэтому Panel похожа на "замочную скважину" - вы можете видеть рабочий стол, который находится прямо под ней.

Когда пользователь нажимает напанель, ИЛИ, нажимает клавишу на клавиатуре, я хочу принять меры.

Но, поскольку панель полностью прозрачна, при нажатии или нажатии клавиши ничего не происходит.Если я сделаю панель непрозрачной (например, установив синий цвет фона), она будет реагировать на щелчки.

Каков наилучший способ заставить панель реагировать на нажатия и нажатия клавиш?

Нужно ли перехватывать все события мыши и клавиатуры во всей системе или есть более простой способ?

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Я обнаружил, что могу использовать GetAsyncKeyState для реагирования как на нажатия клавиш, так и на щелчки мышью.

[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(System.Windows.Forms.Keys vKey);

Тогда я могу позвонить, например, GetAsyncKeyState(Keys.LButton) и GetAsyncKeyState(Keys.Escape). Гораздо проще, чем перехватывать все события клавиатуры и мыши.

0 голосов
/ 05 августа 2011

Панель не принимает ввод текста, вы можете настроить свою главную форму для обработки события нажатия клавиши.

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.form_KeyPress);

http://screensnapr.com/v/VovWAi.png

Что касается определения местоположения мыши на вашемпанель, вы можете использовать событие mouseclick

this.panel1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseClick);

http://screensnapr.com/v/DB3kCQ.png

Я протестировал его, и он работает на полноразмерной прозрачной панели

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