如何在Load()中隐藏当前表单

时间:2015-03-26 13:26:03

标签: c# winforms 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 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文件是否存在。

1 个答案:

答案 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();
        }
    }
}