早上好,
我有几个问题,但我不确定哪个问题是重要的,所以我首先要说明我的整体问题。我无法关闭我的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);
}
}
}
}
答案 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();
}