C#如何动态添加菜单项是Systray应用程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何动态添加菜单项是Systray应用程序相关的知识,希望对你有一定的参考价值。
我想动态地将菜单项添加到系统托盘应用程序。我已经有一个“退出”和“添加更多”菜单。我想添加更多菜单在运行时添加更多菜单,当我点击添加更多。例如,当我点击Add more时,它会自动将新的menuItem添加到托盘App。
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
NotifyIcon notify = new NotifyIcon();
notify.ContextMenuStrip = MainContextMenu();
notify.Icon = new Icon("Led.ico");
notify.Visible = true;
Application.Run();
}
private static ContextMenuStrip MainContextMenu()
{
ContextMenuStrip ConextMenuApp = new ContextMenuStrip();
ConextMenuApp.Items.Add("Add More", null, new EventHandler(AddMoreMenus));
ConextMenuApp.Items.Add("-");
ConextMenuApp.Items.Add("Exit", null, new EventHandler(Exit_Click));
return ConextMenuApp;
}
private static ContextMenuStrip AddMoreMenus(Object sender, EventArgs e)
{
ContextMenuStrip AddNewMenu = new ContextMenuStrip();
AddNewMenu.Items.Add("Menu One Addedd");
return AddNewMenu;
}
private static void Exit_Click(Object sender, EventArgs e)
{
Application.Exit();
}
}
}
答案
有很多方法可以做到这一点,但最简单的方法就是保持对MenuStrip
或MenuStrip
项目的引用并传递它。
尽管如此,只要选择你的毒药。
- 制作包含参考的DI服务
- 让它
Static
- 将其作为对想要操作它的类的引用传入
- 使用Decouple Message或Event Aggregator或其他一些pub / sub体系结构
- 我无法想到的其他事情
以上是关于C#如何动态添加菜单项是Systray应用程序的主要内容,如果未能解决你的问题,请参考以下文章