代码之家  ›  专栏  ›  技术社区  ›  IbrarMumtaz

动态地将ToolStripMenuItems添加到MenuStrip(C#/Winforms)

  •  19
  • IbrarMumtaz  · 技术社区  · 16 年前

    我已经实现了我的解决方案(基本解决方案),我很高兴。

    http://msdn.microsoft.com/en-us/library/bxdt0s8t.aspx

    4 回复  |  直到 14 年前
        1
  •  37
  •   jasonh    16 年前

    我的方法是创建一个数组 ToolStripMenuItems 并用我添加的项目填充该数组。我创建了一个方法来处理点击事件,并让它检查我在运行时创建的每个项目的独特之处。您可以尝试使用 Name 或 Tag 每个的属性 ToolStripMenuItem AddRange

    private void BuildMenuItems()
    {
        ToolStripMenuItem[] items = new ToolStripMenuItem[2]; // You would obviously calculate this value at runtime
        for (int i = 0; i < items.Length; i++)
        {
            items[i] = new ToolStripMenuItem();
            items[i].Name = "dynamicItem" + i.ToString();
            items[i].Tag = "specialDataHere";
            items[i].Text = "Visible Menu Text Here";    
            items[i].Click += new EventHandler(MenuItemClickHandler);
        }
    
        myMenu.DropDownItems.AddRange(items);
    }
    
    private void MenuItemClickHandler(object sender, EventArgs e)
    {
        ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
        // Take some action based on the data in clickedItem
    }
    
        2
  •  1
  •   Philip Wallace    16 年前

    ToolStripItem item = toolStripItems.Add("MyItem");
    item.Click += new EventHandler(....);
    

        3
  •  0
  •   QuickDanger    13 年前

    Menu.DropDownItems.Add(Text, null, EventHandler);
    
        4
  •  0
  •   John    9 年前

    New ToolStripMenuItem() MustInherit 标签,所以我做了这个类:

    Public Class DynamicToolStripMenuItem
        Inherits ToolStripMenuItem
    
        Public Sub New(value As Integer, text As String, handler As System.EventHandler)
            MyBase.New()
            Me.Text = text
            Me.Visible = True
            Me.Tag = value
            AddHandler Me.Click, handler
        End Sub
    End Class
    
    推荐文章