在Program.cs文件中代码如下。 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 frmLogin frmLo = new frmLogin();
 if (frmLo.ShowDialog() == DialogResult.OK)
 {
       Application.Run(new frmMain());
 }frmLogin是我的登录窗体,frmMain是主窗体,我想点击登录框的窗体最小化时隐藏到托盘,就像QQ的登录窗体,但是当我设置frmLo为Hide的时候,程序就退出了。。怎么办呢?

解决方案 »

  1.   


            //使点击关闭按钮后不退出程序而是最小化到任务栏
            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)
                {
                    this.Visible = false;
                    return;
                }
                base.WndProc(ref m);
            }
      

  2.   

    private void formMain_FormClosing(object sender, FormClosingEventArgs e)
            {
                    this.Visible = false;
                    this.ShowInTaskbar = false;
                    notify.Visible = true;
                    e.Cancel = true;
              }
      

  3.   

    e.Cancel = true 放在第一行和放在最后一行有区别吗?
      

  4.   

    我的登录窗体是frmLo.ShowDialog() 显示出来的,所以隐藏之后默认DialogResult就为cancel,然后程序就退出了,我不是要关闭窗体不退出。有好的解决办法大家也可以提出来,平时你们winform登录窗体是怎么写的,比如:登录之后隐藏(这个不好,已经被我放弃了。。)