如何在c#中禁用鼠标移动

时间:2012-01-23 11:22:43

标签: c# winforms winapi

在我的Windows应用程序中,我想隐藏并禁用任何鼠标移动,因为我正在我的应用程序中处理它。我可以将光标的位置设置为一个点,但是如果用户移动鼠标则会改变位置。

如何阻止用户输入移动鼠标?

2 个答案:

答案 0 :(得分:3)

让您的表单实现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);
    }  

请参阅:Disabling mouse movement and clicks altogether in c#

答案 1 :(得分:2)

Cursor.Hide()方法。 它仍然可以移动,但隐藏起来。 您还可以处理MouseMove事件并设置Cursor.Position。