Winforms ShowDialog(this) 阻塞其他应用程序切换到前台windows

Winforms ShowDialog(this) blocks the switching windows of other applications to the foreground

当我在 Winforms 应用程序中打开任何对话框时,Windows 10 会以这些方式表现得很奇怪:

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

我正在用

打开对话框
dialogFormName.ShowDialog(this);

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

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

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

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

在尝试了不同的场景后,我终于找到了问题所在。在我的例子中,我在用户单击 ContextMenu 上的项目后调用 ShowDialog()。 ALT-TAB 的阻塞是由以下代码引起的,该代码将 ContextMenu 附加到菜单上下文对应的 ListView:

lstList.ContextMenu = myContextMenu;

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