我有一个名为“Restoring.exe”的WinForm应用程序。当最小化窗口时,它会移动到系统托盘并隐藏在任务栏中。如果我点击系统托盘中的通知图标,则窗口将前置显示。
public void notifyicon_MouseClick(object sender, System.EventArgs e)
{
notifyicon.Visible = false;
Show();
Activate();
TopMost = true;
BringToFront();
this.WindowState = FormWindowState.Normal;
}
但是我的实际需求是,当第二次单击应用程序时,需要从系统托盘中还原应用程序。
为此,我尝试了以下代码:
Program.cs:
static void Main()
{
if (IsServiceManagerAlreadyRunning())
{
Form1 form1 = new Form1();
form1.Restore();
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Form1.cs:
public void Restore()
{
notifyicon.Visible = false;
Show();
Activate();
TopMost = true;
BringToFront();
this.WindowState = FormWindowState.Normal;
}
我的实际问题是,如果应用程序已经在运行,'Restore'方法就会触发,列出的所有操作都将运行,并且窗口将出现在前面。但是,在完成这些操作后,窗口再次回到系统托盘中,而不是停留在前台。请问有人能提供解决方案吗?