WinForm 之 窗口最小化到托盤及右鍵圖標顯示菜單


  Form最小化是指整個Form都縮小到任務欄上,但是窗體以Form的標題欄形式顯示在任務欄上, 若是想讓Form以Icon的形式顯示在任務欄右下角,則需要給Form添加一個NotifyIcon控件。

一、添加NotifyIcon控件

  1 如下圖為窗體添加一個 NotifyIcon 控件,並指定 Icon 和 Text 屬性,如下圖:

  

  2 在需要窗體最小化到托盤的處理代碼中,添加如下代碼:

if(this.WindowState==FormWindowState.Normal&&this.Visible==true)
{
    this.notifyIcon1.Visible=true;//在通知區顯示Form的Icon
    this.WindowState=FormWindowState.Minimized;
    this.Visible=false;
    this.ShowInTaskbar=false;//使Form不在任務欄上顯示
}

  

   3 可以為 添加NotifyIcon控件指定雙擊事件,雙擊還原,代碼如下:

        /// <summary>
        /// 添加雙擊托盤圖標事件(雙擊顯示窗口)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (WindowState == FormWindowState.Minimized)
            {
                //還原窗體顯示    
                WindowState = FormWindowState.Normal;
                //激活窗體並給予它焦點
                this.Activate();
                //任務欄區顯示圖標
                this.ShowInTaskbar = true;
                //托盤區圖標隱藏
                notifyIcon1.Visible = false;
            }
        }    

  4 關閉窗體詢問是否直接退出或者最小化到托盤

        /// <summary>
        /// 判斷是否最小化,然后顯示托盤
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void F_Main_SizeChanged(object sender, EventArgs e)
        {
            //判斷是否選擇的是最小化按鈕
            if (WindowState == FormWindowState.Minimized)
            {
                //隱藏任務欄區圖標
                this.ShowInTaskbar = false;
                //圖標顯示在托盤區
                notifyIcon1.Visible = true;
            }
        }
        /// <summary>
        /// 確認是否退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void F_Main_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("是否確認退出程序?""退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                // 關閉所有的線程
                this.Dispose();
                this.Close();
            }
            else
            {
                e.Cancel true;
            } 
        }    

二、添加 ContextMenuStrip 控件

  1 在窗體添加一個 ContextMenuStrip 控件,然后添加控件菜單項,最后綁定給 NotifyIcon 控件即可,如下:

  

  2 綁定菜單給 NotifyIcon 控件,如下圖:

  

  3 為 ContextMenuStrip 控件的菜單項指定單擊事件,如下:

        /// <summary>
        /// 托盤右鍵顯示主界面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 顯示ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Normal;
        }

        /// <summary>
        /// 托盤右鍵退出程序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("是否確認退出程序?""退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                // 關閉所有的線程
                this.Dispose();
                this.Close();
            }
        }

三、為 NotifyIcon 控件添加單擊事件,控制菜單的顯示及窗口的還原,代碼如下:

private void myIcon_MouseClick(object sender, MouseEventArgs e)        
{           
   if (e.Button == MouseButtons.Right)            
   {                
       myMenu.Show();            
   }            
   
   if (e.Button == MouseButtons.Left)           
    {                
        this.Visible = true;                
        this.WindowState = FormWindowState.Normal;                            
    }        
 }      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM