程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> winForm窗體關閉按鈕實現托盤後台運行(類似QQ托盤區運行)

winForm窗體關閉按鈕實現托盤後台運行(類似QQ托盤區運行)

編輯:C#入門知識

  對這個需求完全可以在單擊“關閉”按鈕的時候彈出一個對話框,來讓用戶確定是否真的要退出。這是一個很好的解決方法,並且實現也是很容易的。但是人家不想這樣,想要擁有類似QQ在托盤區後台運行的那種效果,沒辦法,只能想辦法來實現了。www.2cto.com   其實,這個在網上也有很多的實現方法,但是我試了試有些直接復制過來並不能直接運行,或者能運行的吧又沒有注釋。今天在這裡就給大家貼一下我的代碼,也有不足之處,希望大家給出意見.   [csharp] using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Linq;   using System.Text;   using System.Windows.Forms;      using System.Windows;         namespace winform窗體托盤後台運行   {       public partial class Form1 : Form        {           //這裡在窗體上沒有拖拽一個NotifyIcon控件,而是在這裡定義了一個變量           private NotifyIcon notifyIcon = null;              public Form1()           {               InitializeComponent();               //調用初始化托盤顯示函數               InitialTray();           }              private void Form1_Load(object sender, EventArgs e)           {               //這裡寫其他代碼           }  www.2cto.com            /// <summary>           /// 窗體關閉的單擊事件           /// </summary>           /// <param name="sender"></param>           /// <param name="e"></param>           private void Form1_FormClosing(object sender, FormClosingEventArgs e)           {               e.Cancel = true;               //通過這裡可以看出,這裡的關閉其實不是真正意義上的“關閉”,而是將窗體隱藏,實現一個“偽關閉”               this.Hide();           }              private void InitialTray()           {               //隱藏主窗體               this.Hide();                  //實例化一個NotifyIcon對象               notifyIcon = new NotifyIcon();               //托盤圖標氣泡顯示的內容               notifyIcon.BalloonTipText = "正在後台運行";                  //托盤圖標顯示的內容               notifyIcon.Text = "窗體托盤後台運行測試程序";               //注意:下面的路徑可以是絕對路徑、相對路徑。但是需要注意的是:文件必須是一個.ico格式               notifyIcon.Icon = new System.Drawing.Icon("E:/ASP項目/images/3.5 inch Floppy.ico");               //true表示在托盤區可見,false表示在托盤區不可見               notifyIcon.Visible = true;               //氣泡顯示的時間(單位是毫秒)               notifyIcon.ShowBalloonTip(2000);                           notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(notifyIcon_MouseClick);                              ////設置二級菜單               //MenuItem setting1 = new MenuItem("二級菜單1");               //MenuItem setting2 = new MenuItem("二級菜單2");               //MenuItem setting = new MenuItem("一級菜單", new MenuItem[]{setting1,setting2});                  //幫助選項,這裡只是“有名無實”在菜單上只是顯示,單擊沒有效果,可以參照下面的“退出菜單”實現單擊事件               MenuItem help = new MenuItem("幫助");                  //關於選項               MenuItem about = new MenuItem("關於");                  //退出菜單項               MenuItem exit = new MenuItem("退出");               exit.Click += new EventHandler(exit_Click);                  ////關聯托盤控件               //注釋的這一行與下一行的區別就是參數不同,setting這個參數是為了實現二級菜單               //MenuItem[] childen = new MenuItem[] { setting, help, about, exit };               MenuItem[] childen = new MenuItem[] {help,about,exit};               notifyIcon.ContextMenu = new ContextMenu(childen);                  //窗體關閉時觸發               this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);           }                    /// <summary>           /// 鼠標單擊           /// </summary>           /// <param name="sender"></param>           /// <param name="e"></param>           private void notifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)           {               //鼠標左鍵單擊               if (e.Button == MouseButtons.Left)               {                   //如果窗體是可見的,那麼鼠標左擊托盤區圖標後,窗體為不可見                   if (this.Visible == true )                   {                       this.Visible = false;                   }                   else                   {                       this.Visible = true;                       this.Activate();                   }               }           }              /// <summary>           /// 退出選項           /// </summary>           /// <param name="sender"></param>           /// <param name="e"></param>           private void exit_Click(object sender, EventArgs e)           {               //退出程序              System.Environment.Exit(0);             }       }   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved