Winforms ShowDialog(this)阻止了将其他应用程序的窗口切换到前台



当我在Winforms应用程序中打开任何对话框时,Windows 10的行为非常奇怪:

  1. ALT-TAB 不再显示窗口列表
  2. 我无法使用任务栏图标切换到隐藏的应用程序 - 如果我选择当前不可见的窗口的任务栏图标(即使它未被 winforms 应用程序隐藏),该图标只会闪烁,然后保持突出显示,但不会带到前台。我可以使用其他可见的应用程序。一旦我关闭另一个对话框,我就可以正确使用其他应用程序的窗口
  3. 如果我通过单击切换到 winforms 应用程序后面的应用程序窗口,则无法通过 ALT-TAB 或单击任务栏图标返回到 winforms 应用程序。我可以通过最小化其他应用程序来返回它

我正在打开对话框

dialogFormName.ShowDialog(this);

TopMost 在所有窗体上都设置为 false,并且未在代码中设置。

我已经阅读了大约 50 篇相关文章,唯一的问题似乎是设置了 TopMost 或未使用父窗体调用 ShowDialog。我不是普通的Winforms开发人员,所以我可能正在做一些愚蠢的事情。这让我发疯,所以我真的很感激任何帮助!

编辑:MessageBox.Show(this,"test")也会出现同样的问题。新创建的应用程序仅使用调用 MessageBox.Show 的单个按钮(此处为"测试")不会出现此问题。问题应用程序使用 EntityFramework,但没有其他包,并且在我添加 EF 之前存在问题。

在尝试了不同的场景后,我最终发现了问题。就我而言,我在用户单击上下文菜单上的项目后调用 ShowDialog()。阻止 ALT-TAB 是由以下代码引起的,该代码将上下文菜单附加到菜单上下文中用于的列表视图:

lstList.ContextMenu = myContextMenu;

一旦我删除了该关联,ShowDialog 就不再阻止 ALT-TAB。

Form.ShowDialog()阻止父窗体,直到它关闭。 使用Show()单独显示窗体,而不会阻止其父级。

最新更新