c# - 为 .NET 5/6 win 表单实现托盘图标上的菜单
问题描述
在没有主窗体的 .NET Framework 4.8 winform 应用程序中,我有以下代码:
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Daemon());
}
public class Daemon : ApplicationContext
{
private readonly NotifyIcon trayIcon;
public Daemon()
{
trayIcon = new NotifyIcon()
{
Icon = "icon.ico",
ContextMenu = new ContextMenu(new MenuItem[]
{
new MenuItem("OPEN", new EventHandler(Open)),
new MenuItem("SETTINGS", new EventHandler(Settings)),
new MenuItem("EXIT", new EventHandler(Exit))
}),
Visible = true
};
}
}
在 .NET 5(或 6)win 表单应用程序中,该NotifyIcon
对象没有ContextMenu
属性,但ContextMenuStrip
我不明白如何使用。
如何在没有主窗体的应用程序的尝试图标上创建一个简单的菜单?
解决方案
它比预期的要简单。
public Daemon()
{
trayIcon = new NotifyIcon()
{
Icon = new Icon("icon.ico"),
ContextMenuStrip = new ContextMenuStrip(),
Visible = true
};
trayIcon.ContextMenuStrip.Items.AddRange(new ToolStripItem[]
{
new ToolStripMenuItem("OPEN", null, new EventHandler(Open), "OPEN"),
new ToolStripMenuItem("SETTINGS", null, new EventHandler(Settings), "SETTINGS"),
new ToolStripMenuItem("EXIT", null, new EventHandler(Exit), "EXIT")
});
}
推荐阅读
- python - Python PyQt5 - 如何重命名表头?
- vue.js - 像对象这样的道具的默认值不起作用
- postgresql - 如何为 Timescale 中的现有表创建物化视图?
- python - BeautifulSoup:重复列
- python - 在连续运行中打开线程时避免增加运行时间
- python - Golang:尝试使用类似于 python 的 zip 功能创建名称、年龄元组
- list - 如何为双向链表编写堆排序?C++
- fluent - 没有批量/缓冲的http输出
- swift - SWIFTUI Observable Object Data Task 只运行一次?
- azure-devops - Jacoco:不能添加同名的不同类