在 C# 中显示应用的最小化窗口计数

5

实际上,我想要的是类似于Skype的功能。如果有人在Skype上发送了两条消息,你会在最小化的Skype窗口上看到数字“2”。因此,我想知道如何在您的C#应用程序的最小化窗口上显示数字/计数?


你是指Windows 7/8任务栏图标吗? - Simon Whitehead
请看这里:http://stackoverflow.com/questions/9970207/how-to-let-a-minimized-form-to-notify-user-to-open-it-from-taskbar - Biby Augustine
@BibyAugustine 这是为了闪烁图标。 - bansi
如何在Windows 7上使用.NET进行任务栏覆盖图标? - Mitch
我是指在应用程序图标/按钮上进行计数(当我们运行应用程序时,在任务栏上可用的图标)。 - Zaheer Mehmood
显示剩余3条评论
1个回答

3
如果您正在使用 WPF,您可以使用 TaskbarButtonInfo.Overlay 属性。
// draw an image to overlay
var dg = new DrawingGroup();
var dc = dg.Open();
dc.DrawEllipse(Brushes.Blue, new Pen(Brushes.LightBlue, 1), new Point(8, 8), 8, 8);
dc.DrawText(new FormattedText("3", System.Threading.Thread.CurrentThread.CurrentUICulture, System.Windows.FlowDirection.LeftToRight,
    new Typeface("Arial"), 16, Brushes.White), new Point(4, 0));
dc.Close();
var geometryImage = new DrawingImage(dg);
geometryImage.Freeze();

// set on this window
var tbi = new TaskbarItemInfo();
tbi.Overlay = geometryImage;

this.TaskbarItemInfo = tbi;

产生
带有一个圆圈数字3的任务栏按钮图标 如果您使用Windows Forms,请使用文档中所述的Windows API Code Pack。这个相关问题

我使用了代码包 API。我的应用程序能在 XP 上运行吗?因为代码包是 Windows 7 API,需要 Win7 环境。 - Zaheer Mehmood
参考它不会限制它在XP上运行,但是当调用需要较新操作系统版本的代码时,可能会出现异常。 - Mitch
@Mitch - 这已经非常接近我想要的了,但有没有办法将覆盖层定位到任务栏图标的右下角,使其完美居中?我知道我很挑剔,如果这是唯一的方法,我会满足于此,但是...Win 10应用商店中的应用可以做到我想要的,为什么我不能呢?! - Kenny83
@Kenny83,你认为UWP有不同的工具可以访问吗?基本图标和覆盖图像都只是图片。覆盖图像位于固定偏移量上,您无法控制,但如果您想要它们对齐,可以调整两个图像以实现这一点。(您也可以跳过使用覆盖图标,而改变基本图标。) - Mitch
@Mitch - 是的,我也觉得官方商店应用程序没有什么不同,这就是为什么我在最后一句话中这样说的原因。我猜 MSFT 的设计师只是比我更擅长设计图像,这一点并不让我感到惊讶。特别是我在谈论邮件应用程序...尝试使用它的图标和未读邮件徽章叠加,但是对齐后者时遇到了麻烦。哦,好吧,我想我只能接受它有几个像素偏离中心。 - Kenny83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接