不能关闭表格

时间:2014-10-07 15:41:29

标签: c#

早上好,

我有几个问题,但我不确定哪个问题是重要的,所以我首先要说明我的整体问题。我无法关闭我的Winform应用程序。我搜索过并找到了许多答案,但他们要么不工作,要么我不理解,要么两者兼而有之。

如果我完成所有工作然后调用Application.Exit表单永远不会关闭。如果我把它放在相同的结果。关闭。但是,如果我在表单上放置一个按钮并调用Application.Exit它将关闭表单。

我显然不理解这个流程,我希望某人能清楚地知道我要做什么。作为一个非程序员,我一直在拼凑这个项目几个月,这是我的最后一步 - 如果从带有参数的命令行运行,请在工作完成后关闭表单。我会尝试更长时间来解决这个问题但是我的Visual Studio试用本周已经用完了所以我转向专家:)

谢谢你, 托德

Program.cs的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ProgramCSToormTest
{
static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(String[] args)
    {

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        //add if
        if (args.Length == 0)
        {
            Application.Run(new Form1("Form"));
        }
        else
        {
            Application.Run(new Form1(args[0]));

        }
    }


}
}

Form1.cs的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ProgramCSToormTest
{

public partial class Form1 : Form
{
    string CLArg1;
    string ReturnText;
    public Form1(string Arg1)
    {
        InitializeComponent();
        if (Arg1 != null)
        {
            CLArg1 = Arg1;
            textBox1.Text = Display(CLArg1);
            //button1.Enabled = false;
        }
        else
        {
            textBox1.Text = "click button to start";
        }
        Application.Exit(); //This seems to be ignored
    }

    public void button1_Click(object sender, EventArgs e)
    {
        CLArg1 = null;
        textBox1.Text = Display("Hello World");
        Application.Exit();
    }
    public string Display(string DisplayText)
    {
        if (CLArg1 != null)
        {
            ReturnText = CLArg1;
            return(ReturnText);

        }
        else
        {
            ReturnText = DisplayText;
            return(ReturnText);
        }

    }
}
}    

2 个答案:

答案 0 :(得分:1)

请参阅this问题。 Application.Close()仅在创建应用程序时有效。这是通过调用Application.Run()来完成的。现在。在您的代码中,您从表单的构造函数中调用Application.Exit()。这是在创建应用程序所需的Application.Run()之前执行的。

要解决此问题,请等到Application.Run()之后。或者,如果要在构造函数中退出应用程序,请使用Environment.Exit(int statusCode)。使用Environment.Exit(int statusCode)时请记住this

答案 1 :(得分:0)

从程序类加载表单时,您无法关闭应用程序。加载表单后尝试调用Exit方法:

 private void Form1_Load(object sender, EventArgs e)
    {
        if (CLArg1 != String.Empty)

        Application.Exit(); 
    }