我做了一个登陆程序,我是利用Form1(登陆窗口)隐藏后显示Form2的方法来实现登陆。现在的问题是Form1登陆成功被隐藏了显示Form2,点右上的“x”(“关闭”符号)后将Form2关闭,并不能关闭整个程序,Form1还在运行,每次都要到进程里面把程序关掉。
问题是:能有什么方法点击Form2右上的“x”就能关闭整个程序????

解决方案 »

  1.   

    Form1里面加上Form2的Close事件,当触发这个事件的时候就把Form1关掉
      

  2.   

    启动窗体最好设为Form2if(Form1.ShowDialog()==DialogResult.OK))
    {
      Application.Run(new Form2());
    }
      

  3.   

    我用close事件,连Form2也一起关掉了啊……
      

  4.   

    没懂楼主的意思,我是说Form1里面加FORM2.Closed += new EventHandler(Form2_Closed);
    然后再Form2_Closed事件里面加上this.Close();
      

  5.   

    Main方法
    static Main ()
    {
      Form1 frmEn = new From1();
      if(frmEn.ShowDialog()==DialogResult.OK))
      {
        Application.Run(new Form2());
      }
    }Form1 窗体放一个Button,在Button单击事件里判断登陆是否成功,成功则
    this.DialogResult = DialogResult.OK;
      

  6.   

    重载form2的closeing 
    override closing()
      

  7.   

    protected override void WndProc(ref Message m)
    {
    const int WM_SYSCOMMAND = 0x0112; 
    const int SC_CLOSE = 0xF060; 
    if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)

    Application.Exit();
    return;

    base.WndProc(ref m); 
    }
    在form2中加个这个方法就可以点击Form2右上的“x”就能关闭整个程序
      

  8.   

    不过用fellowcheng(浮云一小朵) 的方法比较好
      

  9.   

    汗~~~~有这么复杂吗-_-
    要在Form2中点X关闭整个程序在Form2的Closing(VS.Net2005为FormClosing)事件中写代码
            private void Form2_Closing(object sender, FormClosingEventArgs e)
            {
                Application.Exit();
            }
    就行了
      

  10.   

    虽然不太明白楼主的意思,但是给给段代码,希望对楼主有点用处。登陆程序
    窗体和控件:登陆窗体Name为Login,登陆后的窗体Name为MainForm。LoginForm有个button,Name为btnLogin,Text为"登陆".效果:点击"登陆"按钮隐藏Login窗体,show出MainForm窗体,关掉MainForm窗体后,Login窗体再显示出来。实现:
    双击"登陆"按钮,在按钮的Click事件中写
            private void btnLogin_Click(object sender, EventArgs e)
            {
                MainForm A = new MainForm();
                this.Hide();
                A.ShowDialog();
                this.Show();
            }
      

  11.   

    打错了.....窗体和控件:登陆窗体Name为Login,登陆后的窗体Name为MainForm。Login有个button,Name为btnLogin,Text为"登陆".
      

  12.   

    在FORM2的CLOSEIG事件下写:Application.Exit();
    好象也可以
      

  13.   

    感谢fellowcheng(浮云一小朵),可以了
      

  14.   

    //重写这个类的回调函数,回调函数是指当有事件发生时候,系统会自动调用的函数protected override void WndProc(ref Message m)
    {
    const int WM_SYSCOMMAND = 0x0112;   //消息,表明用户按下菜单,或者按钮
    const int SC_CLOSE = 0xF060;  //系统关闭的消息,当你点CLOSE的时候就会发生
    if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE)
    { //如果用户按了那个X,就终止整个程序
    Application.Exit();
    return;

    base.WndProc(ref m); //调用父类的回调函数
    }还是我来帮你解释吧