ContextMenuStrip 动态添加多级子菜单
2018-01-10 15:01
323 查看
1.首先要实例化几个ToolStripItem(要为某一父菜单添加几个子菜单就实例化几个);方法如下:
2.将其添加到ContextMenuStrip
按上面这个模式可以添加多级的。写到这里,还是不知道怎么响应子菜单的执行。这个时候就要借住委托和事件了
3.其实,在实例化后ToolStripItem后要为实例化的ToolStripItem对象添加新的事件,然后再添加到ContextMenuStrip控件。
代码如下:
4.接下来就是完成ts_1_Click这个方法了。当子菜单被单击的时候将会响应现在这个新方法。代码如下:
5.如果要添加多个子菜单就要为每一个子菜单写一个Click事件。
到此此文就结束了。
加一些自己的代码以便参考:
/*添加子菜单*/ 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);
}
相关文章推荐
- 【转载于<小锋刚>博客园】C#遍历ContextMenuStrip右键菜单中包含子菜单的所有菜单并添加事件
- C#遍历ContextMenuStrip右键菜单中包含子菜单的所有菜单并添加事件
- arcengine onmouseup使用contextmenustrip添加右键菜单
- C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开删除文件
- Extjs动态添加子菜单:Ext.menu.Item 动态添加 Ext.menu.Menu
- ContextMenuStrip 添加在窗体。点击右键不能显示问题解答
- contextMenuStrip添加菜单项
- 动态添加菜单/菜单项、子菜单、右键菜单
- 动态添加子菜单的菜单项响应函数
- ContextMenuStrip 类
- Winforms: ContextMenuStrip中的内存泄露
- Shell Extensions -Context Menu(添加右键菜单项)
- Menu动态添加子menu
- Custom an event for DataGridView.ContextMenuStrip
- QT中菜单Menu与工具栏Toolbar中各个Action的动态添加删除
- toolstripbutton 动态添加后 获取当前点击的按钮的值 并且将其删除
- 【c#理解】contextMenuStrip的理解--表示快捷菜单。
- c#中contextMenuStrip与datagridview使用CellMouseDown事件及treeview使用mousedown事件
- menu.addIntentOptions 添加动态菜单----转
- ContextMenuStrip菜单