【发布时间】:2014-02-27 09:29:00
【问题描述】:
我们的应用程序有以下要求:如果应用程序正在运行并且我再次启动应用程序,则必须激活第一个实例而不是打开一个新实例。
为了实现这一点,我在主程序中检查是否已经有一个正在运行的实例。如果是,我使用以下命令将第一个实例放在前面:
Microsoft.VisualBasic.Interaction.AppActivate(appIdentifier);
到目前为止,一切都按预期工作。 此解决方案的唯一问题是,如果第一个实例被最小化,通过再次启动应用程序,第一个实例将处于活动状态,但不可见(仍然最小化)
这是我的问题。如何通过激活实例回到上一个 WindowState。 我的解决方案是订阅 Form.Activated 事件并在 eventhandler 方法中执行以下代码:
if (MyForm.WindowState == FormWindowState.Minimized)
{
MyForm.WindowState = FormWindowState.Normal;
}
但是使用这个解决方案我有一个问题,如果应用程序在最小化应用程序之前处于最大化状态,则在激活它之后不要返回它。
有人知道我该如何解决这个问题吗?有机会拿到最后一个windowState吗?
提前感谢您的帮助!
【问题讨论】:
标签: c# winforms single-instance