如何在c#中启动另一个主窗体

时间:2012-06-15 09:35:50

标签: c# forms

首先,我会显示一个登录表单。当用户输入正确的ID和密码时,我想显示另一个表单,然后关闭登录表单。以下是我启动登录表单的方式。

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new FrmLogin());
    }
}

现在,当我想显示主窗体时,我调用dispose()类的FrmLogin方法,但应用程序立即结束。我的解决方案是将visible类的FrmLogin属性更改为false,我知道它不对,请建议一种解决方法。

4 个答案:

答案 0 :(得分:2)

你在登录完成后再制作第二个APplication.Run;等待它关闭,执行登录,然后是第二个表格的Application.Run,​​这是MAIN表格。

顺便说一下,“FrmLogin”违反了.NET命名模式 - 你似乎是一个旧的VB手(这是一个模式)。它应该是LoginForm。

答案 1 :(得分:2)

var loginForm = new LoginForm();
if(loginForm.ShowDialog() != dont_remember_see_intellisense_or_docs.OK)
  return;
var mainForm = new MainForm();
Application.Run(mainForm);

这会将loginform显示为对话框。在您的登录表单中,您必须将返回值设置为适当的值(即OK)以显示主表单

答案 2 :(得分:1)

您可以将登录表单显示为对话框,如果登录成功,则可以运行主表​​单:

static class Program
{
     public static bool isValid = false;
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        using (FrmLogin login = new FrmLogin())
        { 
            login.ShowDialog(); 
            if (isValid)
            {           
                Application.Run(new MainForm());
            }
        }
    }
}
在您的FrmLogin中

,验证用户并将DialogResult设置为Ok。在这里我按下了按钮点击事件。

private void btnLogin_Click(object sender, EventArgs e)
{

    Program.isValid= true; // impliment this as method 
    if(Program.isValid)
    {
      this.DialogResult = DialogResult.OK;
      // or this.Close();
    }
    else
    {
      //else part code
    }
}

答案 3 :(得分:-2)

要显示来自FrmLogin的另一种形式myForm,只需调用

即可
myForm window = new window()
window.MDIparent = ParentForm;
window.Show();