我创建了一个应用程序,该应用程序在启动时会在系统托盘中启动。我用下面的帖子来实现这一目标:
How to start WinForm app minimized to tray?

此应用程序还仅允许单个实例运行:
http://www.codeproject.com/Articles/32908/C-Single-Instance-App-With-the-Ability-To-Restore

我遇到的问题是,当我第一次启动应用程序时,它会最小化到系统托盘中,但是如果我单击桌面图标,它不会出现。我必须单击任务栏中的图标来还原应用程序。如果我再将其最小化,然后单击出现的桌面图标。

这是我第二次尝试使用winform应用程序,这与SetVisibleCore有关吗?

任何指向正确方向的指针都将是很好的。

最佳答案

如果您将WinForms应用程序设为单例,则使最小化的窗口还原非常容易,

http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx

这只是使用Microsoft.VisualBasic.ApplicationServices命名空间中的WindowsFormsApplicationBase的另一个变体。比使用Mutex更容易/更好。

你可能会改变

    void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
    {
        Form1 form = MainForm as Form1; //My derived form type
        form.LoadFile(e.CommandLine[1]);
    }




    void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
    {
        Form1 form = MainForm as Form1; //My derived form type
        form.Show();
        form.WindowState = FormWindowState.Normal;
    }

关于c# - 单击桌面快捷方式时,从系统托盘还原应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10529370/

10-09 19:56
查看更多