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();
        }
    }
}
答案

有很多方法可以做到这一点,但最简单的方法就是保持对MenuStripMenuStrip项目的引用并传递它。

尽管如此,只要选择你的毒药。

  1. 制作包含参考的DI服务
  2. 让它Static
  3. 将其作为对想要操作它的类的引用传入
  4. 使用Decouple Message或Event Aggregator或其他一些pub / sub体系结构
  5. 我无法想到的其他事情

以上是关于C#如何动态添加菜单项是Systray应用程序的主要内容,如果未能解决你的问题,请参考以下文章

c# windows 窗体 如何 设置菜单的权限

如何在mfc中动态添加子菜单

如何在Qt中动态添加菜单

作业-窗口

动态添加CONTEXTMENUstrip的子菜单后,无法响应CLICK

C# 我知道如何添加右键快捷菜单 但如何动态添加里面的菜单项呢? 求解