响应按键和鼠标点击全透明面板
本文关键字:透明 鼠标 响应 | 更新日期: 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)
,例如。