我有一个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
。为什么呢?
编辑:
我在Program.cs
Main()
中按照建议尝试了:
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
文件是否存在。
答案 0 :(得分:1)
为什么不检查Program类中的static void Main()
?
试试这个:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string path = Path.GetDirectoryName(Application.ExecutablePath);
string file = Path.Combine(path, "EULA.txt");
if (File.Exists(file))
{
var form1 = new Form1();
form1.Closed += (s, args) => this.Close();
form1.Show();
}
else
{
var eula = new EULA();
eula.Show();
}
}
}