怎么看出哪个窗体是主窗体?如何在主窗体显示前,先显示一个登录窗体,登录成功后注销登录窗口,进入主窗体?生手请指教

解决方案 »

  1.   

    Form2 form2 = new Form2();
    form2.Show();
    this.Hide();
      

  2.   

    在运行的时候不是有个application(new form())吗?这个form就是主窗体吧
    想实现登陆窗体比如loadform可以用loadform.showdialog();
      

  3.   

    哦,写错了,是Application.Run(new MainForm()),这个MainForm就是主窗口吧
      

  4.   

    对, Application.Run 中的窗口是主窗口,
    另外, Application.Run 还有一个重载版本, 用于指定主窗口的,
    就是那个使用 ApplicationContext 的那个如果需要在任意地方找到主窗口, 可以结合 进程对象来寻找.
    因为在 Application 上没有提供这个功能.    private void button6_Click(object sender, EventArgs e)
        {
          Form f = getMainForm();
          if (f != null)
            MessageBox.Show(f.Text);
          else
            MessageBox.Show("cannot get Mainform");
        }    // 获取本进程的主窗口对象
        Form getMainForm()
        {
          FormCollection fc = Application.OpenForms;
          foreach (Form f in fc)
            if (f.Handle == System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle)
              return f;
          return null;
        }
      

  5.   

    在解决方案资源管理器中的Program.cs文件下  应用程序的主入口点 运行谁就是主窗体
      

  6.   

    Program.cs:    static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form2 form2 = new Form2();
                form2.ShowDialog();
                Application.Run(new Form1());
            }
        }
      

  7.   

    一个简单的Login窗体,其它的如限制登录次数或用户信息传递等功能自己在frmLogin.cs中扩展
     
    Program.cs
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        frmLogin myLogin = new frmLogin();
        if (myLogin.ShowDialog() == DialogResult.OK)
        {
            Application.Run(new frmMain());
        }
        //else
        //{
        //    MessageBox.Show("登录失败!");
        //}
    }
     
    frmLogin.cs
    private void btnOK_Click(object sender, EventArgs e)
    {
        //可以到数据库中验证
        if (txtUserName.Text == "test" && txtUserPWD.Text == "test")
        {
            this.DialogResult = DialogResult.OK;
        }
        else
        {
            MessageBox.Show("错误的用户名或密码!");
            txtUserName.Focus();
        }
    }
    private void btnCancel_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
    }
    private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (this.DialogResult != DialogResult.Cancel && this.DialogResult != DialogResult.OK)
            e.Cancel = true;
    }
      

  8.   

    顶了 在Program.cs 里面首先要new的是登陆窗体。可以再登陆窗体再打开主窗体
      

  9.   

    Application.Run(new LoadForm());//直接显示登陆窗体Private void buttonok_load()
    {MainForm.showdialog();//显示主窗体
    }