我的应用程序有时会与另一个线程中的服务器通信,而此时应该锁定表单(这意味着用户不能触发任何Click
, KeyDown
.... 事件)。此时,带有加载圆圈的等待覆盖显示了阻止任何鼠标事件(如单击或鼠标悬停)。
但问题是,用户可以通过按键触发 KeyDown 事件,并且用户还可以通过在使用 TAB 键导航到按钮后按 Enter 来进行鼠标点击。
我知道这Form.Enabled = true;
可以解决问题,但是表格看起来很丑陋。我也知道我可以制作一个bool inaction;
然后在事件处理程序中查看这个 var,但我认为有更好的方法。
短表单:如何在没有 .Enabled = True 的情况下阻止表单中的 Click 或 KeyDown 等 GUI 事件?
任何帮助将不胜感激。
编辑:通过将其添加到覆盖控件来解决它:
protected override bool ProcessKeyMessage(ref Message m)
{
return true;
}
protected override bool ProcessTabKey(bool forward)
{
return true;
}