我试图设置我的应用程序的图标(在任务栏中可见)。当我运行.exe本身或从visual studio运行它时,图标是正确的,但从快捷方式开始时这不适用..应用程序本身内部的图标,左上角,是正确的。
用于设置图标的代码:
var assemblyDirectory = Directory.GetCurrentDirectory();
var iconUri = new Uri(Path.Combine(assemblyDirectory, resourceName), UriKind.Absolute);
Icon= BitmapFrame.Create(iconUri);
我尝试添加一个红色圆圈,表示我的应用程序发生了变化,这可以通过更改2个图标来完成。
如何在运行时设置快捷方式图标,或者如何在任务栏图标中显示红色圆圈表示更改?
答案 0 :(得分:0)
虽然在运行期间无法设置程序集图标(它是只读的),但您可以使用NotifyIcon
在系统托盘中显示一个图标,并且在运行时很容易更改。
以下是如何实现NotifyIcon的示例: https://www.codeproject.com/Tips/627796/Doing-a-NotifyIcon-program-the-right-way
注意:由于您使用的是WPF,因此需要在应用程序中包含对Windows.Forms的引用。
编辑:以防链接失效,这里是Program.cs的一些代码示例,需要一个"图标"作为资源导入:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyCustomApplicationContext());
}
public class MyCustomApplicationContext : ApplicationContext
{
public static NotifyIcon trayIcon;
public MyCustomApplicationContext()
{
trayIcon = new NotifyIcon()
{
Icon = icon,
ContextMenu = new ContextMenu(new MenuItem[]
{
new MenuItem("Exit", Exit),
new MenuItem("Do something", DoSomething),
}),
Visible = true,
BalloonTipText = "My Application",
BalloonTipTitle = "My Application",
Text = "My Application Text"
};
trayIcon.Click += new System.EventHandler(trayIcon_Click);
}
private void trayIcon_Click(object sender, System.EventArgs e)
{
//Do something
}
void DoSomething(object sender, EventArgs e)
{
}
void Exit(object sender, EventArgs e)
{
// Hide tray icon, otherwise it will remain shown until user mouses over it
trayIcon.Visible = false;
Application.Exit();
}
}