C#:如何防止主表单显示得太早

Svi*_*ish 2 c# winforms

在我的main方法中,我像往常一样启动主窗体:

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)

在主要表单加载的东西我有以下,这将要求用户登录和东西.

        using (loginForm)
        {
            DialogResult r = loginForm.ShowDialog();
            switch (r)
            {
                case DialogResult.OK:
                    break;
                default:
                    Application.Exit();
                    return;

            }
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是主要表单出现在后台,我想要它,好吧......不是.直到登录确定.我该怎么做?Application.Run()方法说它会自动显示表单.是否有另一种方法可以启动主窗体而不显示它?或者我必须在主窗体的构造函数中将visible设置为false,然后在登录完成后返回true,或类似的东西?做这样的事情的推荐方法是什么?登录表单意图就像一个组合的启动画面和登录.首先它加载并设置一些不同的东西,然后它告诉用户登录.

Ski*_*izz 11

代替:

Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)

尝试:

LoginDialog // the class that handles login UI
  login = new LoginDialog ();

if (login.ShowDialog () == DialogResult.OK)
{
   // check credentials
   // if credentials OK
   Application.Run(new MainForm());
}
Run Code Online (Sandbox Code Playgroud)

ShowDialog方法是一个阻塞调用,程序将停止,直到对话框关闭以响应用户输入 - 按"确定"按钮或"取消"按钮.