ContextMenuStrip 动态添加多级子菜单

Posted 凉城旧巷旧少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContextMenuStrip 动态添加多级子菜单相关的知识,希望对你有一定的参考价值。

1.首先要实例化几个ToolStripItem(要为某一父菜单添加几个子菜单就实例化几个);方法如下:

/*添加子菜单*/
ToolStripItem ts_1 = new ToolStripMenuItem("正常");

 2.将其添加到ContextMenuStrip

((ToolStripDropDownItem)(contextMenuStrip1.Items[1])).DropDownItems.Add(ts_1);

按上面这个模式可以添加多级的。写到这里,还是不知道怎么响应子菜单的执行。这个时候就要借住委托和事件了

3.其实,在实例化后ToolStripItem后要为实例化的ToolStripItem对象添加新的事件,然后再添加到ContextMenuStrip控件。

代码如下:

ts_1.Click+=new EventHandler(ts_1_Click);

 4.接下来就是完成ts_1_Click这个方法了。当子菜单被单击的时候将会响应现在这个新方法。代码如下:

/*添加的"正常"子菜单Click事件*/
private void ts_1_Click(object sender, EventArgs e)
{
          /*当添加的这个子菜单被单击时响应的操作写在这里面*/
}

5.如果要添加多个子菜单就要为每一个子菜单写一个Click事件。

到此此文就结束了。

 

加一些自己的代码以便参考:

//动态添加多级子菜单
        private void addContextMenuStrip()
        {
            this.contextMenuStrip1.Items.Add("修改");
            this.contextMenuStrip1.Items.Add("状态");
            this.contextMenuStrip1.Items.Add("删除");

            /*添加子菜单*/
            ToolStripItem ts_1 = new ToolStripMenuItem("正常");
            ts_1.Click += new EventHandler(ts_1_Click);
            /*只能通过ContextMenuStrip的Item的索引为其添加子菜单,通过Item的Text属性会报错*/
            ((ToolStripDropDownItem)(contextMenuStrip1.Items[1])).DropDownItems.Add(ts_1);
            ToolStripItem ts_2 = new ToolStripMenuItem("维修");
            ts_2.Click += new EventHandler(ts_2_Click);
            ((ToolStripDropDownItem)(contextMenuStrip1.Items[1])).DropDownItems.Add(ts_2);
            ToolStripItem ts_3 = new ToolStripMenuItem("建设中");
            ts_3.Click += new EventHandler(ts_3_Click);
            ((ToolStripDropDownItem)(contextMenuStrip1.Items[1])).DropDownItems.Add(ts_3);

        }
        /*子菜单Click事件*/
        private void ts_1_Click(object sender, EventArgs e)
        {
            ToolStripItem item = (ToolStripItem)sender;
            MessageBox.Show(item.Text);
        }
        /*子菜单Click事件*/
        private void ts_2_Click(object sender, EventArgs e)
        {
            ToolStripItem item = (ToolStripItem)sender;
            MessageBox.Show(item.Text);
        }
        /*子菜单Click事件*/
        private void ts_3_Click(object sender, EventArgs e)
        {
            ToolStripItem item = (ToolStripItem)sender;
            MessageBox.Show(item.Text);
        }

 

以上是关于ContextMenuStrip 动态添加多级子菜单的主要内容,如果未能解决你的问题,请参考以下文章

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

jQuery动态添加多级收缩菜单

原创datagridview动态绑定contextmenustrip,并复制单元格数据

如何将自定义动画添加到 ContextMenuStrip?

[DevExpress] GridControl添加右键菜单

C# 系统应用之ListView控件 .添加ContextMenuStrip右键菜单打开删除文件