c# - 如何在 Windows 10 的系统托盘中显示经典的 BalloonTip 而不是 C# 中的 Toast 通知?
问题描述
我正在为 Windows 构建一个基于 .Net 4.7.2 框架的 Windows 窗体应用程序。该应用程序适用于 Windows 10 和 Windows Server 2019 系统。
当用户最小化应用程序并且应用程序进入托盘时,我想在其托盘图标顶部显示一个经典的 BalloonTip,如下所示:
问题是当我这样做时:
private void form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();
trayIcon.Visible = true;
trayIcon.ShowBalloonTip(8000);
}
}
我的“BalloonTip”在我现在工作的 Windows 10 系统中显示如下:
我知道这是 Windows 10 的新风格。我还了解了 Windows 组策略及其注册表设置。我不想更改 Windows 的策略。
编辑:此外,Toast 通知仅显示 2-3 秒,而不是我设置的 8 秒...
如何在 C# 中完成此操作?
解决方案
也许,Tulpep.NotificationWindow nuget 包可以为您工作。
请看一下这个链接:Foxlearn Notification
编辑:
为自定义气球通知创建您自己的表单并使用以下代码。
请注意,button1 是右上角带有“X”的小按钮,用于关闭。
接下来,在您的表单中添加一个图片框,调整其大小以填充表单并将下面的图像添加到图片框:
然后你可以按照你想要的方式设计通知,添加标签、图片框等。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BubbleNotificationTest
{
public partial class Form1 : Form
{
Timer t = new Timer();
Timer fadeIn = new Timer();
Timer fade = new Timer();
public Form1()
{
InitializeComponent();
Opacity = 0;
fadeIn.Interval = 100;
this.BackColor = Color.FromArgb(28, 28, 28);
this.TransparencyKey = Color.FromArgb(28, 28, 28);
this.StartPosition = FormStartPosition.Manual;
this.Location = new Point(Screen.FromControl(this).Bounds.X + 850, Screen.FromControl(this).Bounds.Y + 662);
fadeIn.Tick += new EventHandler(fadeIn_Tick);
fadeIn.Start();
t.Tick += new EventHandler(t_Tick);
fade.Tick += new EventHandler(fade_Tick);
fade.Interval = 100;
t.Interval = 6000;
t.Start();
}
private void fadeIn_Tick(object sender, EventArgs e)
{
this.Opacity += 0.05;
if (this.Opacity == 1)
{
fadeIn.Stop();
}
}
private void t_Tick(object sender, EventArgs e)
{
fade.Start();
}
private void fade_Tick(object sender, EventArgs e)
{
this.Opacity -= 0.05;
if (this.Opacity == 0)
{
fade.Stop();
this.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
推荐阅读
- linux - docker-compose up 和用户在标准输入上的输入
- c# - 合并和删除发票行但获取 TxnLineID:尽管提供了必填字段,但缺少
- php - 尝试从命令行运行 PHP 脚本(可能的路径问题)
- python - Chainer 中加载的神经网络层的梯度
- javascript - axios 获取请求一直打 404
- android - Recycler.View 适配器仅在屏幕上显示第一项和最后一项
- java - Spring REST 按用户角色限制用户访问
- c# - 手动签署第 3 方 dll 会丢失文件详细信息
- angular - 应用程序中的 Angular 7 错误无法读取未定义的“ceil”
- python - 当我使用 chr() 将 int 转换为字符时,为什么会得到 \xc2?