如何防止ShowDialog从其他应用程序中窃取焦点?

时间:2013-04-25 07:47:45

标签: .net vb.net winforms

在我的应用程序中,在完成一些工作后调用自定义表单的ShowDialog()方法。问题是,如果用户在我的应用程序正在执行其工作时切换到另一个应用程序,则该对话框会将焦点转移到该应用程序,这可能会导致不可预测的行为。预期的行为是在我的应用程序前台显示的对话框,但不在另一个应用程序的顶部,并让我的应用程序的任务栏项目闪烁。

有没有办法阻止ShowDialog()方法窃取焦点?或者我应该使用其他方法吗?

4 个答案:

答案 0 :(得分:1)

C#中,您可以使用ShowDialog()来显示表单stealing focus。并Show()显示没有窃取焦点。我不确定它在VB.NET中是否相同。

答案 1 :(得分:0)

您可以设置属性

me.TopMost = false

Link

答案 2 :(得分:0)

如果你真的想要这个,你可能不得不使用Show。将您自己的财产保留在表格

DialogResult结果;

可能默认取消,所以如果表格关闭,将被视为取消。然后,您只需在用户单击“确定”时进行设置。

答案 3 :(得分:0)

使用Form.ShowWithoutActivation属性(在类中重写它以返回true)。这样你仍然可以使用ShowDialog()。

MSDN article

相关问题