无法从任务栏还原最小化的 WinForms 应用



我遇到了一个非常奇怪的问题,标准的WinForms C#应用程序在最小化后或在最大化模式下使用另一个应用程序时,有时无法从任务栏恢复。

这种情况发生在Windows Server 2012和Windows 10上(我还没有在其他操作系统中测试过)。如果鼠标悬停在我的应用程序任务栏图标上,则会显示应用程序的缩略图。向上移动鼠标光标,将光标悬停在缩略图上,应用程序实际上会再次出现在桌面上,但如果我向左单击缩略图或将光标从缩略图上移开,它会再次消失。如果我右键单击缩略图,我可以从弹出菜单中选择"最大化"或"还原",并且两者都可以正常工作。因此,该问题只影响常规单击任务栏图标或弹出缩略图。

我正在使用。NET Framework 4.6,并且该应用程序仅由一个具有默认属性值的表单组成,没有WndProc重写或其他奇特的东西。

我不知道如何调试它,而且这个错误不是100%可复制的,所以任何关于如何捕获和提供更多信息以帮助解决问题的建议都是非常受欢迎的。

对我来说,问题是主窗口拥有的始终可见的无模式窗体。显然,当主窗口最小化时,无模式窗体也需要最小化。WinForms不会自动为您执行此操作。我必须订阅主窗口Resize事件,并在其中设置状态:

private void MainWindow_OnResize(object sender, EventArgs e)
{
modelessForm.WindowState = WindowState;
}

此问题在Windows 7上未遇到,仅在Windows 10上遇到。

最新更新