在工作中,我是一名教练。我正在上课,教人们如何在没有鼠标的情况下“做东西”...曾见过人们点击“登录”文本框,键入,抓住鼠标,单击“密码”,输入密码,然后再次抓取鼠标点击下面的“连接”按钮?
所以我会教他们如何在没有鼠标的情况下做到这一切(当然还有很多其他事情)
在课程结束时,我会让他们通过某种考试。
所以我正在构建一个基于向导的小应用程序,其中我提供了一些类似实例的表单填写,但我想在进行此测试时以编程方式禁用鼠标。
然而,在向导中,我将不得不让他们再次使用鼠标。
是否有一种 - 可能很简单 - 暂时禁用鼠标的方法,稍后重新启用它?
我正在使用C#2.0,在VC#2k5下进行编程,如果重要的话
答案 0 :(得分:8)
制作表单工具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);
}
这将隐藏光标,使其无法移动光标并禁用鼠标右键和左键。
答案 1 :(得分:2)
您正在寻找Cursor.Hide()
method。
请注意,光标仍然可以移动,它只是不可见 如果您在启用视觉样式的情况下运行,则仍可以通过跟踪悬停效果来使用鼠标 但是,任何能够做到这一点的人都可能不需要你的课程。
执行此操作的更“有趣”的方法是处理MouseMove
事件并设置Cursor.Position
以防止鼠标移动到您的面板中。
答案 2 :(得分:1)
如何采用不同的方法(想出“必须为所有内容编写解决方案”框):在开始上课之前,断开所有鼠标的连接......让他们在需要再次使用鼠标时重新连接它。 / p>
答案 3 :(得分:1)
Imho最简单的方法是PInvoke ShowCursor(FALSE)
函数(参见http://msdn.microsoft.com/en-us/library/ms648396.aspx)
[DllImport("user32.dll")]
static extern int ShowCursor(bool bShow);
编辑:如果您使用的是Windows窗体,这相当于调用Cursor.Hide()(http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.hide(v=VS.100).aspx)。