c# - 在 C# 中完全禁用鼠标移动和单击

标签 c# mouse

<分区>

在工作中,我是一名培训师。我正在设置类(class)来教人们如何在没有鼠标的情况下“做事”......曾经见过人们点击“登录”文本框,输入,拿起鼠标,点击“密码”,输入他们的密码,然后再次拿起鼠标单击下面的“连接”按钮?

所以我会教他们如何在没有鼠标的情况下完成所有这些(当然还有许多其他事情)

在类(class)结束时,我会让他们通过某种考试。

所以我正在构建一个基于向导的小应用程序,其中我展示了一些要填写的表单的真实示例,但我想在他们进行此测试时以编程方式禁用他们的鼠标。

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

有没有一种可能很简单的方法可以暂时禁用鼠标,然后再重新启用它?

我正在使用 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);
    }  

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

关于c# - 在 C# 中完全禁用鼠标移动和单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698673/

相关文章:

linux - 在 Linux 中检测键盘、鼠标 Activity

c# - 捕获表单外的鼠标/键盘事件(在后台运行的应用程序)

c# - 在鼠标经过的地方画一条线

c# - 如何对私有(private)属性进行单元测试?

c# - Azure - 将事件中心使用到 DocumentDB(而不是存储帐户)

c# - 在 C# 中为面板创建布局时遇到问题

java - 检测鼠标点击屏幕上的任意位置

c# - 动态生成一个 Action

c# - 无论如何,都不会读完文字然后写C#

c++ - 使用 glOrtho 缩放到鼠标位置