VS.net2003,用C#做的Windows程序,一个MDI窗体,带有MainMenu,要求子窗体带有自己的菜单,运行时子窗体的菜单不与父窗体的菜单合并。请问如何实现?   我尝试给子窗体也添加了MainMenu,运行的时候它与父窗体的菜单合并了。而我希望主窗体的菜单与子窗体的菜单是独立的!要是有代码或是控件发到我的Emmail:
[email protected]

解决方案 »

  1.   

    合并是必然的,以为你在写
    newMDIChild.MdiParent = this;
    这句话的时候在 MdiParent这个属性的set方法里,系统调用了
    private void InvalidateMergedMenu()
    {
          if (base.Properties.ContainsObject(Form.PropMergedMenu))
          {
                MainMenu menu1 = base.Properties.GetObject(Form.PropMergedMenu) as MainMenu;
                if (menu1 != null)
                {
                      menu1.CleanupMenuItemsHashtable();
                }
                base.Properties.SetObject(Form.PropMergedMenu, null);
          }
          Form form1 = base.ParentFormInternal;
          if (form1 != null)
          {
                form1.MenuChanged(0, form1.Menu);
          }
    }
    这个方法,合并了你的MainMenu...... 你可以试着将子窗体的菜单改为一些控件的组合,而不是MainMenu。