一般我們在開發桌面應用程式儒WPF或Windows Form應用程式時,會設計成不需要常常開起來,而是在背景程序中工作,當有需要的時候透過系統匣的圖示來打開應用程式,在不占用使用者桌面空間的情境下設計應用程式。
本篇文章將引導您將應用程式【隱藏】並【縮小到系統匣】,加入【自定義選單】功能。
一般我們在開發桌面應用程式儒WPF或Windows Form應用程式時,會設計成不需要常常開起來,而是在背景程序中工作,當有需要的時候透過系統匣的圖示來打開應用程式,在不占用使用者桌面空間的情境下設計應用程式。
本篇文章將引導您將應用程式【隱藏】並【縮小到系統匣】,加入【自定義選單】功能。
會寫這篇文章的原因其實也很清楚明瞭,為了讓應用程式能夠常駐在系統匣待命,
並且可以在背景下默默耕耘工作。
再來這功能也是SUKI很久之前開發專案所用到的功能,在此分享給各位未來國家的棟樑!!
透過使用者介面上的控制項來觸發隱藏功能
按下按鈕後縮小到系統匣
並自定義選單功能
再來擊點Icon後,會將隱藏的應用程式回復!
知道工作模式後,直接進入Code :
1: private void Initial()
2: {
3: notifyIcon = new NotifyIcon();
4: //設定通知欄提示的文字
5: notifyIcon.BalloonTipText = "Still running";
6: //設定通知欄在滑鼠移至Icon上的要顯示的文字
7: notifyIcon.Text = "NotifyIcon範例";
8: //決定一個Logo
9: notifyIcon.Icon = (System.Drawing.Icon)(Properties.Resources.Logo);
10: //設定按下Icon發生的事件
11: notifyIcon.Click += (sender, e) => {
12: //取消再通知欄顯示Icon
13: notifyIcon.Visible = false;
14: //顯示在工具列
15: this.ShowInTaskbar = true;
16: //顯示程式的視窗
17: this.Show();
18: };
19:
20: //設定右鍵選單
21: //宣告一個選單的容器
22: ContextMenu contextMenu = new ContextMenu();
23: //宣告選單項目
24: MenuItem notifyIconMenuItem1 = new MenuItem();
25: //可以設定是否可勾選
26: notifyIconMenuItem1.Checked = true;
27: //在NotifyIcon中的頁籤,順序用
28: notifyIconMenuItem1.Index = 1;
29: //設定顯示的文字,後面的(S&)代表使用者按S鍵也可以觸發Click事件!
30: notifyIconMenuItem1.Text = "項目一(S&)";
31: //設定按下後的事情
32: notifyIconMenuItem1.Click += (sender, e) => {
33: MessageBox.Show("項目一 按下囉!!");
34: };
35: //將MenuItem加入到ContextMenu容器中!
36: contextMenu.MenuItems.Add(notifyIconMenuItem1);
37: //設定notifyIcon的選單內容等於剛剛宣告的選單容器ContextMen;
38: notifyIcon.ContextMenu = contextMenu;
39:
40:
41:
42: }
43: //隱藏按鈕按下
44: private void button1_Click(object sender, EventArgs e)
45: {
46: //讓程式在工具列中隱藏
47: this.ShowInTaskbar = false;
48: //隱藏程式本身的視窗
49: this.Hide();
50: //通知欄顯示Icon
51: notifyIcon.Visible = true;
52:
53: //通知欄提示 (顯示時間毫秒,標題,內文,類型)
54: notifyIcon.ShowBalloonTip(1000, "這是標題", "這是內文", ToolTipIcon.Info);
55: }
如此一來我們就可以透過按鈕或其他自定義的事件中,將視窗隱藏並縮小到系統匣中。
並在系統匣的Icon上點選右鍵出現自定義的選單。
References : NotifyIcon 類別
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 ! 感謝。
SUKI