2012/06/24

C#.Net 視窗縮小到工具列

因為之前沒寫好所以來重新撰寫一次
縮小視窗會使用到NotifyIcon這個元件


在使用這個元件要記得配置Icon,如果沒有加入Icon縮小到工具列是看不到的…

這隻程式主要有Form1_Load、Form1_Resize和notifyIcon1_MouseDoubleClick事件




首先說明Form1_Load事件的動作
上述剛剛有提到必須幫NotifyIcon物件配置一個Icon
在表單Load時候將Icon配置為winnie-the-pooh.ico


接著來說明在Form1_Resize的事件的動作
我們都知道Form1_Resize事件會觸發是因為視窗的大小如果有變動,則會啟動這個事件
啟動這個事件時,我們就可以去偵測到底是視窗變大、縮小或是其他變化量

在這邊是去偵測如果目前視窗狀態是縮小的
則把工作列的顯示disable,在將notifyIcon1物件設為可見的

程式縮小時,總是要回覆到原來的畫面可以透過notifyIcon1_MouseDoubleClick事件來處理
判斷如果是左鍵點兩下時,顯示視窗並且將視窗的狀態設定為正常,並將程式重新的在工作列顯示


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;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.notifyIcon1.Text = "縮小後的名稱";
            this.notifyIcon1.Icon = new Icon(@"X:\Users\........\winnie-the-pooh.ico");
        }

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

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


以下成果:

參考文章:
http://www.dotblogs.com.tw/steven0529/archive/2010/08/26/17430.aspx