使用Application.Run()不显示Singleton winform

时间:2011-11-02 03:45:30

标签: c# .net winforms

问题:使用Application.Run()执行下面的代码,没有任何参数显示任何内容。

背景信息:我有一个WinForms应用程序,我正在运行,我希望默认表单是单例,而不是在我第一次运行Application.Run时显示(我想完全控制何时显示它)。

在我的Program.cs中,使用

Application.Run(Form1.Instance)

工作得很好,但我使用的是Application.Run(),没有参数,后跟Form1.Instance.Show(),这样我就可以控制何时隐藏和显示我的Form1。

我在这里缺少什么?

的Program.cs:

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run();
        Form1.Instance.Show();
    }
}

Form1.cs中:

public partial class Form1 : Form
{
    private static Form1 instance;

    public Form1()
    {
        InitializeComponent();
    }

    public static Form1 Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new Form1();
            }
            return instance;
        }
    }
}

1 个答案:

答案 0 :(得分:4)

把Form1.Instance.Show();在Application.Run();

之前
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1.Instance.Show();
        Application.Run();

并处理Form1 t oforce应用程序的formclosed事件以退出

    private void Form1_FormClosed(object sender, FormClosedEventArgs e)
    {
        Application.Exit();
    }