如何退出Windows窗体/ C#程序

时间:2012-04-18 09:10:25

标签: c# winforms exit

A类有一个Form1(System.Windows.Forms.Form的子类)成员。

class A {
        Form1 form;
        public A()
        {
            form = new Form1();
            form.Show();
        }
    }
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        A a = new A();
        Application.Run();
    }

问题是我不知道如何退出程序。我在处理Form.Closed事件或调用A.Dispose()时尝试过Application.Exit(),但Windows任务管理器仍然列出了我的程序进程。

如何完成此计划?

4 个答案:

答案 0 :(得分:4)

Application.Run has 3 overload秒。您正在使用this一个没有参数。

Windows以message loop 运行您的程序,但它不关心您的表单。
所以如果你关闭你的表格并不重要;程序仍然会运行。

第二次重载是每个人都使用的,Application.Run(Form)。这个在窗体上运行Windows消息循环,因此当您在窗口上单击关闭时,应用程序将关闭。

您的代码应为:

class A {
    Form1 form;
    public A()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        form = new Form1();
        form.Show();
        Application.Run(form);
    }
}
[STAThread]
static void Main()
{
    A a = new A();
}

答案 1 :(得分:2)

关注Microsoft,你应该使用它:

Application.Run(a.Form);

因为MSDN说明了

  

大多数Windows窗体开发人员不需要使用此版本的方法。您应该使用Run(Form)重载来启动具有主窗体的应用程序,以便在关闭主窗体时应用程序终止。

答案 2 :(得分:1)

我认为那里有混音。查看Application.Exit的文档。

在那里您将看到Exit将为您引发Closed事件,并且调用Exit可能会导致无限循环(这可能导致您的问题,应用程序仍然可见)。

答案 3 :(得分:0)

试试这个:

Environment.Exit(1);