应用程序只在Windows中运行一个实例并在隐藏主窗体时显示表单

时间:2017-04-29 07:59:14

标签: c# winforms

我有一个winform应用程序通过一个表单,需要应用程序只在Windows中运行一个实例 当隐藏

时,我无法显示表单

我需要一个明确的代码来显示我隐藏的表单

以我的形式

Undefined variable: _SESSION in

program.cs只在Windows中运行一个实例并专注于应用程序 和我的问题是如何显示主要形式何时隐藏()???

this.Hide();

更新:上面的代码适用于前景窗口最小化窗口 ...可以。 我的问题是如何显示隐藏的表单???

抱歉我的英文

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 NewInstanceHandler()中的任何代码都在旧进程上运行:)我通过进程ID检查它。我认为这是最好的灵魂。

添加 Microsoft.VisualBasic.ApplicationServices 右键单击引用并选中 Microsoft.VisualBasic

using Microsoft.VisualBasic.ApplicationServices;

static Form1 MainForm;
[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    MainForm = new Form1();
    SingleInstanceApplication.Run(MainForm,  NewInstanceHandler);
}

public static void NewInstanceHandler(object sender, StartupNextInstanceEventArgs e)
{   
    // anything u need run on old instance
    // MainForm.Hide();
    MainForm.Show();
    MainForm.WindowState = FormWindowState.Normal;
    e.BringToForeground = true;
}


public class SingleInstanceApplication : WindowsFormsApplicationBase
{
     private SingleInstanceApplication()
     {
        base.IsSingleInstance = true;
     }
     public static void Run(Form f, StartupNextInstanceEventHandler startupHandler)
     {
        SingleInstanceApplication app = new SingleInstanceApplication();
        app.MainForm = f;
        app.StartupNextInstance += startupHandler;
        app.Run(new string[0]);
    }        
}