这是我在关闭事件中写的代码, 
private void ChangeFrm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                e.Cancel = true;
                this.Hide();
            }
            else
            {
                e.Cancel = false;
            }
}
现在出现个问题 当我运行我写的程序后 电脑不能关机,退出程序后 就可以关机了 这是怎么回事啊,求指点下。

解决方案 »

  1.   


        C#编写最小化时隐藏为任务栏图标的 Window appllication.    1.设置WinForm窗体属性showinTask=false    2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。    3.添加窗体最小化事件(首先需要添加事件引用):    this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);    //上面一行是主窗体InitializeComponent()方法中需要添加的引用    private void Form1_SizeChanged(object sender, EventArgs e)
        {
        if(this.WindowState == FormWindowState.Minimized)
        {
        this.Hide();
        this.notifyIcon1.Visible=true;
        }
        }    4.添加点击图标事件(首先需要添加事件引用):    private void notifyIcon1_Click(object sender, EventArgs e)
        {
        this.Visible = true;
        this.WindowState = FormWindowState.Normal;
        this.notifyIcon1.Visible = false;
        }
        5.可以给notifyIcon添加右键菜单:    主窗体中拖入一个ContextMenu控件NicontextMenu,点中控件,在上下文菜单中添加菜单,notifyIcon1的ContextMenu行为中选中NicontextMenu 作为上下文菜单。    this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
        this.NicontextMenu = new System.Windows.Forms.ContextMenu();
        this.menuItem_Hide = new System.Windows.Forms.MenuItem();
        this.menuItem_Show = new System.Windows.Forms.MenuItem();
        this.menuItem_Aubot = new System.Windows.Forms.MenuItem();
        this.menuItem_Exit = new System.Windows.Forms.MenuItem();
        this.notifyIcon1.ContextMenu = this.NicontextMenu;
        this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject( "NotifyIcon.Icon ")));
        this.notifyIcon1.Text = " ";
        this.notifyIcon1.Visible = true;
        this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
        this.notifyIcon1.Click += new System.EventHandler(this.notifyIcon1_Click);
        this.NicontextMenu.MenuItems.AddRange(    new System.Windows.Forms.MenuItem[]
        {
        this.menuItem_Hide,
        this.menuItem_Show,
        this.menuItem_Aubot,
        this.menuItem_Exit
        }
        );    //
        // menuItem_Hide
        //
        this.menuItem_Hide.Index = 0;
        this.menuItem_Hide.Text = "隐藏 ";
        this.menuItem_Hide.Click += new System.EventHandler(this.menuItem_Hide_Click);
        //
        // menuItem_Show
        //
        this.menuItem_Show.Index = 1;
        this.menuItem_Show.Text = "显示 ";
        this.menuItem_Show.Click += new System.EventHandler(this.menuItem_Show_Click);
        //
        // menuItem_Aubot
        //
        this.menuItem_Aubot.Index = 2;
        this.menuItem_Aubot.Text = "关于 ";
        this.menuItem_Aubot.Click += new System.EventHandler(this.menuItem_Aubot_Click);
        //
        // menuItem_Exit
        //
        this.menuItem_Exit.Index = 3;
        this.menuItem_Exit.Text = "退出 ";
        this.menuItem_Exit.Click += new System.EventHandler(this.menuItem_Exit_Click);    protected override void OnClosing(CancelEventArgs e)
        {
        this.ShowInTaskbar = false;
        this.WindowState = FormWindowState.Minimized;
        e.Cancel = true;
        }
        protected override void OnClosing(CancelEventArgs e)
        {
        //this.ShowInTaskbar = false;
        this.WindowState = FormWindowState.Minimized;
        e.Cancel = true;
        }    private void CloseCtiServer()
        {
        timer.Enabled = false;
        DJ160API.DisableCard();
        this.NotifyIcon.Visible = false;
        this.Close();
        this.Dispose();
        Application.Exit();
        }    private void HideCtiServer()
        {
        this.Hide();
        }    private void ShowCtiServer()
        {
        this.Show();
        this.WindowState = FormWindowState.Normal;
        this.Activate();    }
        private void CtiManiForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
        this.CloseCtiServer();
        }    private void menuItem_Show_Click(object sender, System.EventArgs e)
        {
        this.ShowCtiServer();
        }    private void menuItem_Aubot_Click(object sender, System.EventArgs e)
        {    }    private void menuItem_Exit_Click(object sender, System.EventArgs e)
        {
        this.CloseCtiServer();
        }    private void menuItem_Hide_Click(object sender, System.EventArgs e)
        {
        this.HideCtiServer();
        }    private void CtiManiForm_SizeChanged(object sender, System.EventArgs e)
        {
        if(this.WindowState == FormWindowState.Minimized)
        {
        this.HideCtiServer();
        }
        }    private void notifyIcon1_DoubleClick(object sender,System.EventArgs e)
        {
        this.ShowCtiServer();
        }