C# 托盤通知

firespeed發表於2024-10-26

一 托盤通知

NotifyIcon托盤通知:
程式可以在通知區建立一個通知圖示。一般地,可以提示一個氣泡通知,右鍵選單支援。
準備:需要一個圖示(*.ico),用於顯示在通知區。如果沒有ico格式,可以將png圖片轉成ico。

演示:在專案中新增托盤通知。
① 設定文字Text;
② 選擇圖示Icon;

預設地,圖示資源儲存在Form1.resx裡,其實也可以使用全域性圖示資源。

執行程式,觀察托盤區的圖示。

二 氣泡通知

氣泡通知:BalloonTip

演示:點選下載時,開啟一個下載任務。下載完成時,在托盤處顯示氣泡通知。點選氣泡通知時,顯示主視窗。
程式碼實現:

notifyIcon1.ShowBalloonTip(
timeout,
title,
text,
icon);

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

namespace 氣泡通知
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if(e.CloseReason==CloseReason.UserClosing)
            {
                e.Cancel = true;
                this.Hide();
            }
        }

        private void 顯示主視窗ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Show();
            this.Activate();
        }
        //模擬下載
        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();

            Thread th = new Thread(this.DownloadTask);
            th.Start();
        }

        private void DownloadTask()
        {
            for(int i=0;i<5;i++)
            {
                Thread.Sleep(1000);
                int percent = i * 100 / 5;
                Console.WriteLine("模擬下載任務:{0}%", i);
            }
            OnTaskFinished();
        }

        //下載任務完成時,在托盤處顯示氣泡通知
        private void OnTaskFinished()
        {
            if(this.InvokeRequired)
            {
                this.Invoke(new Action(this.OnTaskFinished));
                return;
            }

            this.notifyIcon1.ShowBalloonTip(0,
                "下載完成",
                "下載XXXX.ZIP已經完成",
                ToolTipIcon.Info);
        }
        //使用者點選氣泡通知時,顯示主視窗
        private void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
        {
            this.Show();
            this.Activate();
        }
    }
}

相關文章