【发布时间】:2015-03-26 13:26:03
【问题描述】:
我有一份 EULA 表格,这是要显示的第一个表格。虽然如果用户勾选复选框,我的程序会在同一目录中创建一个隐藏的 txt 文件。如果文件存在,则在程序启动时,我不希望显示 EULA 表单,而是显示主要的 Form1。
private void EULA_Load(object sender, EventArgs e)
{
string path = Path.GetDirectoryName(Application.ExecutablePath);
string file = path + "EULA.txt";
if (File.Exists(file))
{
this.Hide();
var form1 = new Form1();
form1.Closed += (s, args) => this.Close();
form1.Show();
}
}
在ButtonClick 上,我可以成功使用上述 if 子句中的代码。
上面的代码同时打开了EULA 和Form1。为什么?
编辑:
我按照建议在Main() 中的Program.cs 中尝试过:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string path = Path.GetDirectoryName(Application.ExecutablePath);
string file = path + "Mailer_EULA.txt";
if (File.Exists(file))
{
Application.Run(new Form1());
}
else
{
Application.Run(new EULA());
}
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
但是无论文件是否存在,这都会打开Form1。
【问题讨论】:
-
为什么不在 Program 类中检查
static void Main()? -
因为直到这一刻我才知道这是可能的。 :) 让我检查一下。
-
如果您在表单的显示事件上添加代码,您将获得所需的结果。但我不认为这是做这件事的正确地方。所以试试 Program 类。
-
你确定你没有下面的原始
Application.Run(new Form1());代码吗? -
100% 确定,我复制了整个
Main()。