欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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});
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。