private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
     e.Cancel = true;
     this.Hide();
} private void menuItem8_Click(object sender, System.EventArgs e)
{
      this.Dispose();
}我想做一个类似sqlserver服务控制器的小东西,遇到了点小问题.我希望点击x的时候不要关闭窗口,真正的关闭放在系统托盘的右键菜单里,事实上我上面的程序已经做到这一点.但是奇怪的问题来了,windows关机的时候却无法把我的程序关闭,导致无法关机.请教一下各位老大,有没有什么办法能两全其美.

解决方案 »

  1.   

    字义一个变量:bool closeMe=false;
    private void menuItem8_Click(object sender, System.EventArgs e)
    {
          closeMe=true;
          Application.Exit();
    }private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    if(!closeMe)e.Cancel = true;
    }
      

  2.   

    private void menuItem8_Click(object sender, System.EventArgs e)
    {
          Application.Exit();
    }就可以了
      

  3.   

    bool closeMe=false;private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
      e.Cancel = !closeMe;
      if (!closeMe) this.Hide();
    } private void menuItem8_Click(object sender, System.EventArgs e)
    {
      closeMe = true;
      this.Close();
    }
      

  4.   

    “windows关机的时候却无法把我的程序关闭,导致无法关机”
    哈哈,好像是这样子的,只有手动去关掉应用程序才能关机
    不知道msn是怎么实现的
      

  5.   

    刚才试过了,好像关不掉,连x都不能关闭了,不过右键的系统图盘菜单倒是能关掉。
    最关键的是还是不能关机。请问一下windows关闭应用程序的时候是不是也要从Form1_Closing执行????
      

  6.   

    // 当不是最小化时,让它最小化,如果是最小化则关闭;
    // 这样才能实现系统关闭的时候自动关闭本程序。
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

      if (this.WindowState != FormWindowState.Minimized)
      {
        this.WindowState = FormWindowState.Minimized;
        e.Cancel = true;
      }
      else e.Cancel = false;
    }
      

  7.   

    如果使用NotityIcon 要先Dispose掉;
      

  8.   

    to  wuyi8128(六) :好像和NotityIcon关系不大,我最初是用dispose的,然后才发现了不能关闭的问题.另外,您提的对窗口状态进行判断的提议,我试过了,结果是按x后无法隐藏到系统托盘,于是我在e.Cancel = true;后面加了this.hide();发现问题如下,双击系统托盘图标的时候无法展开窗口,2、在窗口展开的时候也不能关机。
      

  9.   

    我觉得关键是要找到windows关闭一个应用程序和点击x关闭应用程序有什么区别。