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

C# Winforms ShowDialog(此)阻止将其他应用程序的窗口切换到前台,c#,winforms,showdialog,C#,Winforms,Showdialog,当我在Winforms应用程序中打开任何对话框时,Windows 10在以下方面的行为异常: ALT-TAB不再显示窗口列表 我无法使用任务栏图标切换到隐藏的应用程序-如果我选择了当前不可见的窗口的任务栏图标(即使它没有被winforms应用程序隐藏),图标只会闪烁,然后保持高亮显示,但不会显示在前台。我可以使用其他可见的应用程序。一旦我关闭“其他”对话框,我就可以正确使用其他应用程序的窗口 如果通过单击winforms应用程序后面的应用程序窗口切换到该窗口,则无法通过ALT-TAB或单击任务栏

当我在Winforms应用程序中打开任何对话框时,Windows 10在以下方面的行为异常:

  • ALT-TAB不再显示窗口列表
  • 我无法使用任务栏图标切换到隐藏的应用程序-如果我选择了当前不可见的窗口的任务栏图标(即使它没有被winforms应用程序隐藏),图标只会闪烁,然后保持高亮显示,但不会显示在前台。我可以使用其他可见的应用程序。一旦我关闭“其他”对话框,我就可以正确使用其他应用程序的窗口
  • 如果通过单击winforms应用程序后面的应用程序窗口切换到该窗口,则无法通过ALT-TAB或单击任务栏图标返回winforms应用程序。我可以通过最小化其他应用程序返回到它
  • 我正在打开对话

    dialogFormName.ShowDialog(this);
    
    TopMost在所有表单上都设置为false,并且未在代码中设置

    我已经阅读了大约50篇相关文章,唯一的问题似乎不是最顶层的设置,就是没有使用父窗体调用ShowDialog。我不是一个普通的Winforms开发人员,所以我可能在做一些愚蠢的事情。这快把我逼疯了,所以我真的很感谢你的帮助

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

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

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

    lstList.ContextMenu = myContextMenu;
    

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

    父窗体将被阻止,并且应用程序中的模式行为没有问题。问题在于,当对话框打开时,其他应用程序/窗口无法正常运行。