如何在 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 子句中的代码。

上面的代码同时打开 EULAForm1。为什么?

编辑: 我按照建议在 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();
        }
    }
}