在c#中完全禁用鼠标移动和点击

在工作中,我是一名教练。 我正在上课,教人们如何在没有鼠标的情况下“做东西”……曾见过人们点击“登录”文本框,键入,抓住鼠标,单击“密码”,输入密码,然后再次抓取鼠标单击下方的“连接”按钮?

所以我会告诉他们如何在没有鼠标的情况下做到这一切(当然还有许多其他事情)

在课程结束时,我会让他们通过一种考试。

所以我正在构建一个基于向导的小应用程序,其中我提供了一些类似于现实生活的表单填写示例,但我想在进行此测试时以编程方式禁用鼠标。

但是,在向导中,我将不得不让他们再次使用鼠标。

是否有一种 – 可能很简单 – 暂时禁用鼠标的方法,并在以后重新启用它?

我正在使用C#2.0,在VC#2k5下进行编程,如果这很重要的话

使表单实现IMessageFilter

然后将以下代码添加到窗体:

  Rectangle BoundRect; Rectangle OldRect = Rectangle.Empty; private void EnableMouse() { Cursor.Clip = OldRect; Cursor.Show(); Application.RemoveMessageFilter(this); } public bool PreFilterMessage(ref Message m) { if (m.Msg == 0x201 || m.Msg == 0x202 || m.Msg == 0x203) return true; if (m.Msg == 0x204 || m.Msg == 0x205 || m.Msg == 0x206) return true; return false; } private void DisableMouse() { OldRect = Cursor.Clip; // Arbitrary location. BoundRect = new Rectangle(50, 50, 1, 1); Cursor.Clip = BoundRect; Cursor.Hide(); Application.AddMessageFilter(this); } 

这将隐藏光标,使其无法移动它并禁用鼠标右键和左键。

您正在寻找Cursor.Hide()方法 。

请注意,光标仍然可以移动,它只是不可见。
如果您在启用视觉样式的情况下运行,则仍可以通过跟踪hover效果来使用鼠标。
但是,任何能够做到这一点的人可能都不需要你的课程。

这样做的一种更“有趣”的方法是处理MouseMove事件并设置Cursor.Position以防止鼠标移动到面板中。

一个不同的方法怎么样(想出“必须为所有事情编写解决方案”框):在开始上课之前,断开所有鼠标……让他们在需要再次使用鼠标时重新连接它。

Imho最简单的将是PInvoke的ShowCursor(FALSE)函数(参见http://msdn.microsoft.com/en-us/library/ms648396.aspx )

 [DllImport("user32.dll")] static extern int ShowCursor(bool bShow); 

编辑:这相当于调用Cursor.Hide()( http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.hide (v=VS.100) .aspx )如果你正在使用Windows窗体。