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. 字符串之strstr

    功能:查找第二个字符串是否存在第一个字符串中. 输入:字符串1,字符串2 返回值:成功返回str1中的位置,失败返回NULL #include <iostream> using names ...

  2. vue-cli 搭建项目

    1.cnpm install -g vue-cli 2.vue -V(注意大写,查vue版本) 3.vue init webpack vue1(创建vue1目录) 4.cd vue1(定位到目录中) ...

  3. sql获取该周的开始结束日期

    mssql函数 IF EXISTS ( SELECT 1 FROM sysobjects WHERE name = 'fn_GetWeekDate') DROP FUNCTION fn_GetWeek ...

  4. ACM解题之(ZOJ 1094) Matrix Chain Multiplication

    题目来源: 点击打开链接 题目翻译: 矩阵乘法问题是动态规划的典型例子. 假设你必须评估一个表达式,如A * B * C * D * E,其中A,B,C,D和E是矩阵.由于矩阵乘法是关联的,乘法运算的 ...

  5. Python函数之—— 装饰器(Day13)

    一.什么是装饰器 顾名思义,装饰器指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 二.装饰器需要遵循的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数 ...

  6. RabbitMQ队列/Redis缓存

    一.RabbitMQ队列 RabbitMQ安装(Centos7安装):1.安装依赖:yum install socat (不安装会报错)2.下载rpm包:wget http://www.rabbitm ...

  7. ajax使用formdata 提交excel文件表单到rails解析

    .modal-body .container-fluid .row .col-md-12 1.下载模板文件 = link_to '模板文件' .row .col-md-12 = form_tag '' ...

  8. Loadrunder之脚本篇——参数化方法

    导语 参数化旨在模拟多数据来进行测试,所以再选择参数化你明确你参数化的内容! 方法一 1.确定需要参数化的内容 2.选中需要参数化的内容 3.右键选中的内容->Replace with a Pa ...

  9. php一些常用功能封装

    //二分查找 function bin_sch($array, $low, $high, $k) { if ($low <= $high) { $mid = intval(($low + $hi ...

  10. xml转换为对象 微信接口

    public sealed class XMLSerilizable { /// <summary> /// XML转换为对象 /// </summary> /// <t ...