c#菜单动态合并的实现方法
程序员文章站
2023-11-14 18:47:22
说明
在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。开发过mdi窗体的读者可能都知道,当mdi子窗体最大化时,子窗体和主窗体的菜单能够自动的合并。这是如何实现的呢?本...
说明
在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。开发过mdi窗体的读者可能都知道,当mdi子窗体最大化时,子窗体和主窗体的菜单能够自动的合并。这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能。实例效果如图1.2所示。
要点
c# 2.0中已经将弹出菜单封装为context menustrip控件,利用该控件中的items对象可以操作菜单中的菜单项。该对象是toolstripmenuitem类型,使用items.addrange( )方法可以向弹出菜单中添加菜单项,该方法原型如下。
public void addrange ( toolstripitem[] toolstripitems )
参数说明如下。
toolstripitems:控件的数组。
过程
(1)创建一个项目,将其命名为ex01_02,默认窗体为form1。
(2)从工具箱中向form1窗体添加一个menustrip控件用来设计菜单;同时向窗体添加contextmenustrip控件用来设计右键菜单;选中menustrip控件创建一个“打开子窗体”主菜单,然后选中contextmenustrip控件为其添加子项。
(3)为程序添加一个窗体,默认名为form2,同时向窗体添加contextmenustrip控件用来设计右键菜单,然后选中contextmenustrip控件为其添加子项。
private void 打开自窗体toolstripmenuitem_click(object sender, eventargs e) { form2 f = new form2(); f.mdiparent = this; f.show();//显示子窗体 f.resize += new eventhandler(f_resize); } void f_resize(object sender, eventargs e) { form2 f = (form2)sender; toolstripmenuitem item = new toolstripmenuitem(); for (int i = 0; i < f.contextmenustrip2.items.count; )//合并菜单 { item.dropdownitems.add(f.contextmenustrip2.items[i]); } this.contextmenustrip1.items.addrange(new system.windows.forms.toolstripitem[] { item}); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。