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

C# 如何退出Windows窗体/C程序,c#,winforms,exit,C#,Winforms,Exit,类具有System.Windows.Forms.Form成员的Form1子类 class A { Form1 form; public A() { form = new Form1(); form.Show(); } } /// <summary> /// The main entry point for the application. /

类具有System.Windows.Forms.Form成员的Form1子类

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();
    }
问题是我不知道如何退出程序。我已尝试在处理表单时使用Application.Exit.Closed事件或调用A.Dispose,但Windows任务管理器仍会列出我的程序的进程

如何完成此程序?

尝试以下操作:

Environment.Exit(1);
您应该使用以下方法:

Application.Run(a.Form);
因为他说

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


我想你是搞错了。检查文档中是否有错误

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

s。您正在使用一个没有参数的

Windows在一个窗口中运行您的程序,但它不关心您的窗体。 所以,如果你关闭你的表单,这并不重要;程序仍将运行

第二个过载是每个人都使用的。这个窗口在窗体上运行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();
}

请尝试此链接@ta.speot.is Application。运行将无法作为类型为a的is而不是表单或ApplicationContext运行。看@Gideon我读得太快了。我的错误是:@ta.speot.is:是的,这确实发生了,尤其是当你必须在SONitpick上读这么快的时候:构造器要为太多负责。@ta.speot.is有点正确;chiffree的回答很好,但是他必须声明他的字段形式为public,以便在类A之外使用。然后使用这样的字段是令人讨厌的。设计有点像OP。也许“A类”应该扩展“形式”?这样你就可以节省大的构造函数并调用'Application.Runa'。