2

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

有没有办法防止该ShowDialog()方法窃取焦点?还是我应该使用另一种方法?

4

4 回答 4

2

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

MSDN 文章

于 2016-10-13T23:16:55.657 回答
1

C#中,您使用ShowDialog()来显示stealing focus您所说的表单。和Show()在不窃取焦点的情况下显示。我不确定它在 VB.NET 中是否相同。

于 2013-04-25T07:58:26.283 回答
0

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

DialogResult 结果;

可能默认为取消,因此如果表单关闭,它将被视为取消。然后你只需要在用户点击确定时进行设置。

于 2013-12-07T13:59:31.483 回答
0

你可以设置属性

me.TopMost = false

关联

于 2013-04-25T09:18:57.230 回答