我创建了一个在整个屏幕上最大化的表单。
在该表单中,并且已调整大小以填充整个表单,我已将背景颜色设置为Red
的面板放置。表单的TransparencyKey
设置为Red
。
因此,Panel就像一个“钥匙孔” - 你可以看到它正下方的桌面。
当用户点击面板时,或者按键盘上的键,我想采取行动。
但是,因为面板完全透明,当单击它或按下某个键时,没有任何反应。如果我使面板不透明(例如将其背景颜色设置为蓝色),它会对点击做出响应。
让小组响应点击次数和按键的最佳方式是什么?
我是否必须在整个系统上挂钩所有鼠标键盘事件或者是否有更简单的方法?
答案 0 :(得分:0)
面板不接受文本输入,您可以设置主窗体来处理按键事件。
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.form_KeyPress);
http://screensnapr.com/v/VovWAi.png
关于在面板上获取鼠标位置,您可以使用鼠标点击事件
this.panel1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseClick);
http://screensnapr.com/v/DB3kCQ.png
我测试了它,它适用于全尺寸透明面板
答案 1 :(得分:0)
我发现我可以使用GetAsyncKeyState
来响应按键和鼠标点击。
[DllImport("user32.dll")]
public static extern int GetAsyncKeyState(System.Windows.Forms.Keys vKey);
然后,我可以拨打GetAsyncKeyState(Keys.LButton)
和GetAsyncKeyState(Keys.Escape)
。比连接所有键盘和鼠标事件简单得多。