[C#]讓視窗縮小到工具列吧-NotifyIcon

[C#]讓視窗縮小到工具列吧-NotifyIcon

C#寫的Windows程式如何讓視窗縮小到系統列呢?今天看了一下,好簡單,只要透過NotifyIcon這個物件就可以做到囉,以下簡單一個範例:


using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication7
{
    public partial class Form2 : Form
    {
        //宣告NotifyIcon
        private System.Windows.Forms.NotifyIcon notifyIcon1;

        public Form2()
        {
            InitializeComponent();

            //指定使用的容器
            this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
            //建立NotifyIcon
            this.notifyIcon1.Icon = new Icon("Q32.ico");
            this.notifyIcon1.Text = "NotifyIcon Example";
        }

        private void Form2_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide();
                this.notifyIcon1.Visible = true;
            }
        }
    }
}

重點就指在Form2建構中的那幾行囉,宣告了一個NotifyIcon,指定好對應的Container跟Icon的路徑及要顯示的文字內容,並在Form2_SizeChanged時去判斷是不是按下縮到最小的選項,如果是的話就將notifyIcon1設定為顯示,這樣一來就可以將我們的程式縮小到系統列囉:

這是我測試的Icon:

image

可以看到將程式縮小到系統列囉,移動到上頭也會顯示Hint訊息:NotifyIcon Example。

image

那如果我要像MSN一樣,點選兩下再叫出Form的話怎麼做,很簡單,加入以下的程式即可:

初始化時一併註冊MouseDoubleClick的事件:


            this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);

呼叫Show()來叫出此Form即可:


{
    //讓Form再度顯示,並寫狀態設為Normal
    this.Show();
    this.WindowState = FormWindowState.Normal;
}

寫一些Windows的小工具也蠻好玩的。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。