Nod*_*ink 7 .net c# .net-core .net-5
在没有主窗体的 .NET Framework 4.8 winform 应用程序中,我有以下代码:
[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Daemon());
}
Run Code Online (Sandbox Code Playgroud)
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
};
}
}
Run Code Online (Sandbox Code Playgroud)
在 .NET 5(或 6)win 表单应用程序中,该NotifyIcon对象没有ContextMenu属性,但ContextMenuStrip我不明白如何使用。
如何为没有主窗体的应用程序在尝试图标上创建一个简单的菜单?
Mar*_*ese 13
与接受的答案相同,但稍微简洁一些,无论好坏:
public Daemon()
{
trayIcon = new NotifyIcon()
{
Icon = new Icon("icon.ico"),
ContextMenuStrip = new ContextMenuStrip()
{
Items =
{
new ToolStripMenuItem("OPEN", null, new EventHandler(Open), "OPEN"),
new ToolStripMenuItem("SETTINGS", null, new EventHandler(Settings), "SETTINGS"),
new ToolStripMenuItem("EXIT", null, new EventHandler(Exit), "EXIT")
}
},
Visible = true
};
}
Run Code Online (Sandbox Code Playgroud)
如果该Items = {...}语法看起来很奇怪,请参阅此处。
此外,下表显示了 .NET Core 3 中删除的 Windows 窗体类及其相应的替换项。
这比预期的要简单。
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")
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5083 次 |
| 最近记录: |