是否有可能在if语句中检测到鼠标单击(左/右)在任何位置(表单内部和外部)?如果可能,又是如何实现的?
if(MouseButtons.LeftButton == MouseButtonState.Pressed){
...
}发布于 2021-01-02 23:33:48
一种方法是用一个无边框的窗体覆盖整个屏幕,并将属性设置为透明(在完全透明之上的几个百分比,不确定全透明是否有效,但您不会注意到差异),并将其设置为最高。然后使用表单中的事件。一旦检测到单击,这将不会影响窗体下面的任何东西(在我的应用程序中,这是我希望发生的事情),但是窗体可以关闭,然后在不到一秒的时间内再次单击鼠标,以激活下面的控件。我在VB6中使用windows API使用鼠标钩子没有问题,但似乎找不到在2019版本的.NET中可以在c#中工作的东西,所以这是一个很好的变通方法。当然,为了更聪明,您可以使用不规则表单方法来使透明表单具有与鼠标相同的形状,并遵循它。注意:我刚刚找到了使用钩子完成这项工作的完整代码,这些钩子一般人都可以立即启动和运行!KeyboardMouseHooks C#库- CodePlex存档PS如果您使用my (哑巴)方法,请记住创建一个退出键或按钮,否则您将不得不重新启动计算机,除非窗体被编程为在实际单击时消失,如建议的那样!
https://stackoverflow.com/questions/49068445
复制相似问题