如何防止我的“关于表格”(没有输入框,仅限确定按钮)失去焦点,强制用户点击“确定”?我尝试了验证和ErrorProvider。我还试图像这样委托Show,Activate和Focus:
AboutForm myAboutForm = new AboutForm();
myAboutForm.Deactivate += delegate { myAboutForm.Show(); myAboutForm.Activate(); };
myAboutForm.Show();
但没有任何作用。
答案 0 :(得分:10)
让您的表格成为Modal窗口对话框。
AboutForm myAboutForm = new AboutForm();
myAboutForm.ShowDialog();
来自MSDN - ShowDialog
:
将表单显示为模式对话框。
答案 1 :(得分:2)
您需要将中止表格定义为modal。模态窗口是(每Wikipedia):
在用户界面设计中,模态窗口是子窗口 要求用户在返回操作之前与其进行交互 父应用程序,从而阻止了工作流程 应用程序主窗口。模态窗口通常称为重窗口 或模态对话框,因为窗口通常用于显示对话框 框。
例如,
myAboutForm.ShowDialog();
代替myAboutForm.Show();
所以:
AboutForm myAboutForm = new AboutForm();
myAboutForm.ShowDialog();
在MSDN on displaying modal and modeless windows,
了解详情必须先关闭或隐藏模态表单或对话框,然后才能使用 继续使用其他应用程序。
最后,根据MSDN,我不确定Deactivate是否按照您的想法运作:
当表单失去焦点而不再是活动表单时发生。
和
您可以使用此事件执行更新其他任务等任务 应用程序中的窗口,其中包含已停用表单中的数据。
答案 2 :(得分:2)
将表单显示为模式对话框:
myAboutForm.ShowDialog();
答案 3 :(得分:1)
在Windows上,桌面具有最高优先级。如果您的应用正在运行,则无法阻止用户访问桌面。但是,有一些技巧可以做到。您只需设置表单的最顶层属性,这样用户将始终在所有应用程序之上查看。 ShowDialog会将您的表单保留在您的应用程序之上。
答案 4 :(得分:0)
AboutForm myAboutForm = new AboutForm();
myAboutForm.ShowDialog();