如何在C#中禁用鼠标点击

时间:2016-03-02 20:45:09

标签: c# winforms

我试图阻止鼠标输入一段时间我没有成功

我试过

  

块引用

BlockInput(true)但它需要提升的权限无用

这就是我想要的东西

BlockMouse(true);

// My code starts here
...
// My code ends here

BlockMouse(false);

3 个答案:

答案 0 :(得分:1)

使用此代码并实现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 :(得分:1)

我认为在代码运行时将所有控件(如按钮)设置为禁用更为优雅,然后再次启用它们

要为用户提供光学反馈,请将光标设置为忙Application.UseWaitCursor = true;然后Application.UseWaitCursor = false;

当然,此解决方案仅阻止鼠标点击您的应用程序,并且不会完全禁用鼠标点击

答案 2 :(得分:0)

我认为阻止鼠标单击是不好的,因为大多数输入都是通过鼠标单击进行的,因此最好重写“保护的覆盖无效的OnMouseDown(MouseEventArgs e)”。