响应按键和鼠标点击全透明面板

本文关键字:透明 鼠标 响应 | 更新日期: 2023-09-27 18:04:28

我创建了一个在整个屏幕上最大化的表单。

在该表单中,大小为填充整个表单,我放置了一个面板,背景颜色设置为Red。表单的TransparencyKey被设置为Red

因此,面板就像一个"钥匙孔"——你可以看到它正下方的桌面。

当用户在面板上单击或按键盘上的键时,我要采取行动。

但是,因为面板是完全透明的,当点击它或按下一个键时,什么也没有发生。如果我将面板设置为非透明(例如,将其背景色设置为蓝色),它会对点击做出响应。

让面板响应点击和按键的最佳方法是什么?

我是否必须钩住整个系统上的所有鼠标和键盘事件,或者是否有更简单的方法?

响应按键和鼠标点击全透明面板

面板不接受文本输入,您可以设置主窗体来处理按键事件。

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

我已经测试过了,它可以在一个全尺寸的透明面板上工作

我发现我可以使用GetAsyncKeyState来响应按键和鼠标点击。

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

然后,我可以调用GetAsyncKeyState(Keys.LButton)GetAsyncKeyState(Keys.Escape),例如。