雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

c#使用NotifyIcon控件实现托盘图标闪烁

2024-07-22 46

在C# Windows Forms应用程序中,若要实现一个NotifyIcon控件(托盘图标)像QQ一样在任务栏闪烁,你需要使用一些额外的逻辑来控制图标的闪烁。NotifyIcon控件本身并不直接支持闪烁功能。以下是一个简化的方法来实现这一效果:

创建一个定时器(Timer),用于控制闪烁的频率。 在定时器的Tick事件中,改变NotifyIcon的Visible属性来模拟闪烁效果。 使用Random类来决定每次Tick事件时是显示图标还是不显示图标。

下面是一个简单的示例代码:

csharpusing System;
using System.Windows.Forms;
using System.Threading;

public partial class MainForm : Form
{
    private NotifyIcon notifyIcon;
    private Timer timer;
    private Random random = new Random();

    public MainForm()
    {
        InitializeComponent();
        InitializeNotifyIcon();
        InitializeTimer();
    }

    private void InitializeNotifyIcon()
    {
        notifyIcon = new NotifyIcon()
        {
            Icon = new Icon("icon.ico"), // 你的图标路径
            Visible = true,
            ContextMenuStrip = new ContextMenuStrip(), // 可选:添加右键菜单
        };
        notifyIcon.MouseClick += notifyIcon_MouseClick; // 可选:添加鼠标点击事件处理方法
    }

    private void InitializeTimer()
    {
        timer = new Timer();
        timer.Interval = 500; // 设置闪烁频率,例如500毫秒(半秒)
        timer.Tick += Timer_Tick;
        timer.Start(); // 开始计时器
    }

    private void Timer_Tick(object sender, EventArgs e)
    {
        if (random.Next(2) == 0) // 50%的几率显示图标,50%的几率隐藏图标
        {
            notifyIcon.Visible = false; // 隐藏图标
        }
        else
        {
            notifyIcon.Visible = true; // 显示图标
        }
    }

    private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left) // 如果是左键点击,则显示主窗口(例如QQ的点击效果)
        {
            this.Show(); // 显示主窗口,或者根据需要执行其他操作,如激活窗口等。
        }
    }
}

这段代码创建了一个定时器,每隔500毫秒(半秒)就有一半的几率隐藏或显示通知图标,从而产生闪烁的效果。记得替换"icon.ico"为你的实际图标文件路径。如果需要实现更复杂的闪烁效果,例如QQ那样的渐变闪烁,可能需要更复杂的逻辑或使用第三方库来实现。

更新于:1个月前
赞一波!

文章评论

全部评论