如何在 Load() 中隐藏当前表单
How to hide current form in Load()
我有一份 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
in 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
无论文件是否存在。
为什么不在程序 class 中检查 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();
}
}
}
我有一份 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
in 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
无论文件是否存在。
为什么不在程序 class 中检查 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();
}
}
}