我试图阻止鼠标输入一段时间我没有成功
我试过
块引用
BlockInput(true)但它需要提升的权限无用
这就是我想要的东西
BlockMouse(true);
// My code starts here
...
// My code ends here
BlockMouse(false);
答案 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)”。