我是新手 问一个问题。比如我有两个窗体 FrmLogin 和FrmMain我设置的是Application.Run(new FrmMain());在FrmMain 的FrmMain_Load事件中 我new了一个 frmLogin 是不是就会出现 登陆窗体?然后判断 登陆窗体的ShowDialog是否为ok 但是如果我的登陆窗体 想直接关闭 如何也让主窗体关闭呢? 请高手告之 谢谢

解决方案 »

  1.   

    static void Main()
    {
    FrmLogin frmLogin=new FormLogin();if (frmLogin.ShowDialog()==DialogResult.OK)
    {
       Application.Run(new FrmMain());
    }
    }
      

  2.   

    但是 如果frmLogin如果 点右上角的X的话 FrmMain照样还是会弹出来啊
      

  3.   

    一个简单的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;
    }
      

  4.   

    private void btnOK_Click(object sender, EventArgs e)
    {
        //可以到数据库中验证
        if (txtUserName.Text == "test" && txtUserPWD.Text == "test")
        {
            frmMain myForm = new frmMain();
             this.Hide();
             myForm.Show();
        }
        else
        {
            MessageBox.Show("错误的用户名或密码!");
            txtUserName.Focus();
        }
    }         
      

  5.   

    还有个问题 登陆成功以后 为什么不弹出 main啊
      

  6.   

    上面的btnOK是登陆界面的确定按钮,在Program.cs中是 Application.Run(new frmLogon());
      

  7.   

    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("登录失败!");
                //}
            }
    login代码
          private void btnOK_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "1" && textBox2.Text == "2")
                {
                    this.DialogResult = DialogResult.OK;            }
                else
                {
                    MessageBox.Show("错误的用户名或密码!");
                    textBox2.Focus();
                }        }mian代码
     FrmLogin frmLogin = new FrmLogin();            if (frmLogin.ShowDialog() == DialogResult.OK)
                {
                    frmLogin.Close();
                    
                }              else
                 {                 this.Visible = false;
                
                 }
      

  8.   

    你全乱了,Program.cs里写Application.Run(new FrmLogon());
    FrmLogon里写
    private void btnOK_Click(object sender, EventArgs e) 

        //可以到数据库中验证 
        if (txtUserName.Text == "test" && txtUserPWD.Text == "test") 
        { 
            frmMain myForm = new frmMain(); 
            this.Hide(); 
            myForm.Show(); 
        } 
        else 
        { 
            MessageBox.Show("错误的用户名或密码!"); 
            txtUserName.Focus(); 
        } 

    FrmMain在关闭按钮里写this.close();
    你为什么先启动主窗体,然后才登陆?逻辑混乱!
      

  9.   

    main里就不要再new FrmLogin(); 了,因为登录验证的操作是在new FrmLogin(); 之前完成的设断点看下你的代码有没有执行到这一行
    Application.Run(new FrmMain()); 
      

  10.   

    楼主,你不要认为一定要打开主窗体才能把程序启动!先run登陆窗体,通过验证打开主窗体就行!
      

  11.   


    ==>
    main里就不要再new FrmLogin(); 了,因为登录验证的操作是在new FrmMain(); 之前完成的
    main里只做main该做的事就可以了,因为验证已经通过了