日期:2014-05-19  浏览次数:20942 次

C# & WinForm|请教下高手,Form关闭时最小化到托盘,右击关闭怎么退出程序?
点击窗体上的“X”关闭使之最小化到托盘,然后右击弹出菜单,选择“关闭”如何完全关闭?

private   void     Form1_Closing(object   sender,   System.ComponentModel.CancelEventArgs   e)
                {                    

                        this.WindowState   =   FormWindowState.Minimized;
                        e.Cancel   =   true;                      
                       
                }

  private   void   Form1_SizeChanged(object   sender,   EventArgs   e)
                {
                        if   (this.WindowState   ==FormWindowState.Minimized   )
                        {
                                this.Hide();
                                this.notifyIcon1.Visible   =   true;
                        }
                }
========
这是我单击 "X "按钮时,代码
请教高手,如何退出程序

------解决方案--------------------
你一定要在如下的方法里添加参数来标识是不是应该真的退出程序:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!this.m_allowExit)
{
this.WindowState = FormWindowState.Minimized;
e.Cancel = true;
}
}

然后在弹出的菜单的Click事件里设置这个this.m_allowExit=true;
这样窗口就会顺利的关闭了.
------解决方案--------------------
/// <summary>
/// 重写窗体关闭事件
/// </summary>
/// <param name= "m "> </param>
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.Hide();
return;
}
base.WndProc (ref m);
}
------解决方案--------------------
点x和使用菜单关闭程序执行不同程序

你只要在菜单那多设一个变量加以区分就OK了