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

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

2.将其添加到ContextMenuStrip

((ToolStripDropDownItem)(contextMenuStrip1.Items[])).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[])).DropDownItems.Add(ts_1);
ToolStripItem ts_2 = new ToolStripMenuItem("维修");
ts_2.Click += new EventHandler(ts_2_Click);
((ToolStripDropDownItem)(contextMenuStrip1.Items[])).DropDownItems.Add(ts_2);
ToolStripItem ts_3 = new ToolStripMenuItem("建设中");
ts_3.Click += new EventHandler(ts_3_Click);
((ToolStripDropDownItem)(contextMenuStrip1.Items[])).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 动态添加多级子菜单的更多相关文章

  1. python开发_tkinter_多级子菜单

    在之前的blog中有提到python的tkinter中的菜单操作 python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 python开发_tkinter_窗口控件_自 ...

  2. Android_(控件)动态添加或删除Spinner下拉菜单

    使用ArrayList动态数组的依赖性实现动态增减Spinner下拉菜单选项功能. 设置一个EditText输入框,当用户输入了文字并单击[添加]按钮的同时,就会将输入的值添加Spinner至下拉菜单 ...

  3. [ PHP+jQuery ] ajax 多级联动菜单的应用:电商网站的用户地址选择功能 ( 二 ) - 仿亚马逊下拉面板

    /** jQuery version: 1.8.3 Author: 小dee Date: 2014.11.8 */ 接上一篇博客. 实现带缓存的仿亚马逊下拉面板 效果图: 图1 初始 图2 点击省份 ...

  4. Vue页面权限控制和动态添加路由

    原文转自:点我 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的.如果一个页面,有角色越权访问,这时就得做出限制了. Vu ...

  5. C#主菜单动态添加子菜单并设置触发事件

    我所使用的是devxepress中的主菜单栏时barsubitem控件,想的是在其能够动态添加子菜单栏并能点击触发事件: /// <summary> /// 创建主按钮的子按钮 /// & ...

  6. EasyUI创建异步树形菜单和动态添加标签页tab

    创建异步树形菜单 创建树形菜单的ul标签 <ul class="easyui-tree" id="treeMenu"> </ul> 写j ...

  7. ASP.NET MVC动态生成网站菜单及子菜单

    在开发ASP.NET MVC网站时,Insus.NET想实现动态产生网站的主菜单及子菜单. 你需要在网站管理后台管理此2张表(Menu,SubMenu)的信息,添加,删除,编辑,更新等. Sequen ...

  8. MFC 单文档中动态添加菜单项和响应菜单事件

    新建一个单文档程序 在查看菜单项中增加两个子菜单,分别为隐藏工具栏(ID_HIDE),新建菜单(ID_NEWMENU) 在Resource.h中增加一个ID_NEWMENU宏 #define ID_N ...

  9. menuStrip1动态添加菜单及快捷键

    public partial class FormMkTest : Form { public FormMkTest() { InitializeComponent(); } private void ...

随机推荐

  1. HAProxy安装及简单配置

    一.HAProxy简介 代理的作用:web缓存(加速).反向代理.内容路由(根据流量及内容类型等将请求转发至特定服务器).转码器(将后端服务器的内容压缩后传输给client端).缓存的作用:减少冗余内 ...

  2. 剑指offer 面试13题

    面试13题: 题目:机器人的运动范围 题:地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子 ...

  3. 前端基础之Bootstrap介绍

    bootstrap简介 http://v3.bootcss.com/ Bootstrap优点:  下载:  Bootstrap引入 <meta name="viewport" ...

  4. rabbitmq 命令行工具 执行失败.

          修改cookie成一样       资料: http://zhiku8.com/rabbitmq-authentication-failed-rejected-by-the-remote- ...

  5. 学习OpenCV2——Mat之通道的理解

    本文详细介绍了opencv中涉及通道的知识,包括图像类型转换,通道合成分解,图像的显示. 来源:http://blog.csdn.net/GDFSG/article/details/50927257 ...

  6. GitHub命名规则

    ● Added ( 新加入的需求 ) ● Fixed ( 修复 bug ) ● Changed ( 完成的任务 ) ● Updated ( 完成的任务,或者由于第三方模块变化而做的变化 )

  7. python Selenium库的使用

    一.什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行 ...

  8. Oracle索引(2)索引的修改与维护

    修改索引   利用alter index语句可以完成的操作 重建或合并索引 回收索引未使用的空间或为索引非配新空间 修改索引是否可以并行操作及并行度 修改索引的存储参数以及物理属性 指定Logging ...

  9. ElasticSearch入门常用命令

    基于开源项目MyAlice智能客服学习ElasticSearch https://github.com/hpgary/MyAlice/wiki/%E7%AC%AC01%E7%AB%A0%E5%AE%8 ...

  10. EntityFramework 学习 一 Validate Entity

    可以为实体实现自定义验证,重写DBContext中的个ValidateEntity方法 protected override System.Data.Entity.Validation.DbEntit ...