【发布时间】:2013-02-05 12:36:37
【问题描述】:
我的应用程序有时会与另一个线程中的服务器通信,而此时应该锁定表单(这意味着用户无法触发任何Click、KeyDown .... 事件)。此时,带有加载圆圈的等待叠加层会显示阻止任何鼠标事件(如单击或鼠标悬停)。
但问题是,用户可以通过按键触发 KeyDown 事件,并且用户还可以通过在使用 TAB 键导航到按钮后按 Enter 来进行鼠标点击。
我知道Form.Enabled = true; 可以解决问题,但是表格看起来很丑。我也知道我可以创建一个bool inaction;,然后在事件处理程序中查看这个 var,但我认为有更好的方法。
短格式:如何阻止像 Click 这样的 GUI 事件或来自没有 .Enabled = True 的表单的 KeyDown?
任何帮助将不胜感激。
编辑:通过将其添加到覆盖控件来解决它:
protected override bool ProcessKeyMessage(ref Message m)
{
return true;
}
protected override bool ProcessTabKey(bool forward)
{
return true;
}
【问题讨论】:
标签: c# .net winforms user-interface