/// <summary>
 /// 删除某个子窗体
 /// </summary>
 /// <param name="gui"></param>
 public void Remove(IMdiChild gui)
 {
     if (_hash.ContainsValue(gui))
     {
         Framework.WinGui.Menus.AppMenuCommand stype;
         if (this._active == gui)
         {
             this.DeactiveGui();
         }
         _hash.Remove(gui.ID);
         //移除工具条菜单
         Framework.WinGui.Menus.AppMenuCommand toollistmenu = AppMenuCommand.ToolBarList;
         if (toollistmenu != null)
         {
             if (gui.Tools != null)
             {
                 for (int i = 0; i < gui.Tools.Length; i++)
                 {
                     for (int j = 0; j < toollistmenu.Parent.MenuItems.Count; j++)
                     {
                         if (toollistmenu.Parent.MenuItems[j] is AppMenuCommand)
                         {
                             stype = (AppMenuCommand)toollistmenu.Parent.MenuItems[j];
                             if (stype.ID == gui.ID + gui.Tools[i].Name)
                             {
                                 toollistmenu.Parent.MenuItems.RemoveAt(j);
                                 break;
                             }
                         }
                     }
                 }
             }
         }
         //移除窗口菜单
         Framework.WinGui.Menus.AppMenuCommand mdilist = AppMenuCommand.MidList;
         if (mdilist != null)
         {
             for (int j = 0; j < mdilist.Parent.MenuItems.Count; j++)
             {
                 if (mdilist.Parent.MenuItems[j] is AppMenuCommand)
                 {
                     stype = (AppMenuCommand)mdilist.Parent.MenuItems[j];
                     if (stype.ID == gui.ID + "_MdiList")
                     {
                         mdilist.Parent.MenuItems.RemoveAt(j);
                         break;
                     }
                 }
             }
         }
         //释放窗体资源
     }
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 public void OnMdiChildSelectExecute(ICommand sender)
 {
     if (sender is AppMenuCommand)
     {
         AppMenuCommand m     = (AppMenuCommand)sender;
         string         id    = m.Tag.ToString().Substring(0, m.Tag.ToString().Length - 8);
         IMdiChild      child = (IMdiChild)this._hash[id];
         if (child != null && this.Active != child)
         {
             this.ActiveGui(child);
         }
     }
 }
 /// <summary>
 /// 添加子窗体至主父窗体中
 /// </summary>
 /// <param name="gui"></param>
 public void Add(IMdiChild gui)
 {
     if (this._hash.ContainsKey(gui.ID))
     {
         return;
     }
     else
     {
         this._hash.Add(gui.ID, gui);
         //添加工具条菜单
         Framework.WinGui.Menus.AppMenuCommand toollistmenu = AppMenuCommand.ToolBarList;
         if (toollistmenu != null)
         {
             if (gui.Tools != null && gui.Tools.Length != 0)
             {
                 for (int i = 0; i < gui.Tools.Length; i++)
                 {
                     Framework.WinGui.Menus.AppMenuCommand stype;
                     stype      = new AppMenuCommand(gui.ID + gui.Tools[i].Name, new ExecuteCommandHandler(this.OnMdiToolsBarSelectExecute), gui.Tools[i].Name);
                     stype.Text = gui.Tools[i].Text;
                     //默认为选择
                     stype.Checked        = true;
                     gui.Tools[i].Closed += new EventHandler(OnToolsBarClose);
                     toollistmenu.Parent.MenuItems.Add(stype);
                 }
             }
         }
         //添加窗体菜单
         Framework.WinGui.Menus.AppMenuCommand mdilist = AppMenuCommand.MidList;
         if (mdilist != null)
         {
             Framework.WinGui.Menus.AppMenuCommand stype;
             stype = new AppMenuCommand(gui.ID + "_MdiList", new ExecuteCommandHandler(this.OnMdiChildSelectExecute), gui.Caption);
             if (this._hash.Count == 1)
             {
                 stype.BeginGroup = true;
             }
             mdilist.Parent.MenuItems.Add(stype);
         }
     }
 }
        /// <summary>
        ///
        /// </summary>
        private void DeactiveGui()
        {
            Framework.WinGui.Menus.AppMenuCommand stype;
            Framework.WinGui.Menus.AppMenuCommand toollistmenu;
            Framework.WinGui.Menus.AppMenuCommand mdilist;
            this._container.Focus();
            ((Control)_active).Capture = false;
            this._container.Controls.Remove((Control)_active);

            ((Control)_active).Parent = null;
            //改变工具条菜单状态
            toollistmenu = AppMenuCommand.ToolBarList;
            if (toollistmenu != null)
            {
                if (_active.Tools != null)
                {
                    for (int i = 0; i < _active.Tools.Length; i++)
                    {
                        for (int j = 0; j < toollistmenu.Parent.MenuItems.Count; j++)
                        {
                            if (toollistmenu.Parent.MenuItems[j] is AppMenuCommand)
                            {
                                stype = (AppMenuCommand)toollistmenu.Parent.MenuItems[j];
                                if (stype.ID == _active.ID + _active.Tools[i].Name)
                                {
                                    //去掉的代码
                                    //									stype.Checked = false;
                                    //									stype.Enabled = false;
                                    //									break;
                                }
                            }
                            //从停靠中移除工具条
                            ((IMdiContainer)guiMain).MdiToolBarPanel.RemoveToolbar(_active.Tools[i]);
                            _active.Tools[i].Parent = null;
                            _active.Tools[i].Close();
                        }
                    }
                }
            }

            //改变窗口菜单状态
            mdilist = AppMenuCommand.MidList;
            if (mdilist != null)
            {
                for (int j = 0; j < mdilist.Parent.MenuItems.Count; j++)
                {
                    if (mdilist.Parent.MenuItems[j] is AppMenuCommand)
                    {
                        stype = (AppMenuCommand)mdilist.Parent.MenuItems[j];
                        if (stype.ID == _active.ID + "_MdiList")
                        {
                            stype.Checked = false;
                            break;
                        }
                    }
                }
            }

            //移除子菜单项目
            if (_active.Menus != null)
            {
                for (int j = 0; j < _active.Menus.Length; j++)
                {
                    //刘李明删除的代码
                    ((IMdiContainer)guiMain).MdiMainMenu.Buttons.Remove(_active.Menus[j]);
                }
            }
            _active = null;
        }
        /// <summary>
        /// 设置子窗体为激活状态
        /// </summary>
        /// <param name="active">子窗体对象</param>
        private void ActiveGui(IMdiChild active)
        {
            Framework.WinGui.Menus.AppMenuCommand stype;
            //用于控制toolbar是否显示
            Framework.WinGui.Menus.AppMenuCommand toollistmenu;
            Framework.WinGui.Menus.AppMenuCommand mdilist;

            //实现关闭以前窗口
            //this._container.SuspendLayout();
            if (_active != null)
            {
                this.DeactiveGui();
            }
            //激活当前窗口,修改主窗口显示信息
            guiMain.Text = string.Format(CardApplication.applicationName + " - [{0}]", active.Caption);
            this._active = active;
            ((Control)_active).Capture = true;
            this._container.Controls.Add((Control)_active);
            ((Control)_active).Parent = this._container;
            // ((Control)_active).Focus();
            _active.OnMidChildActive();

            //必须在子控件中生成一个menu,并设置其属性IsToolBarList为true,否则默认条件下,下面的代码是不执行的
            toollistmenu = AppMenuCommand.ToolBarList;
            if (toollistmenu != null)
            {
                if (active.Tools != null)
                {
                    for (int i = 0; i < active.Tools.Length; i++)
                    {
                        for (int j = 0; j < toollistmenu.Parent.MenuItems.Count; j++)
                        {
                            if (toollistmenu.Parent.MenuItems[j] is AppMenuCommand)
                            {
                                stype = (AppMenuCommand)toollistmenu.Parent.MenuItems[j];
                                if (stype.ID == "RES_Menu" + active.ID + active.Tools[i].Name)
                                {
                                    stype.Checked = true;
                                    stype.Enabled = true;
                                    //									break;改动过的代码
                                }
                            }
                            //添加工具条到停靠
                            //把子窗体的toolbar添加至主窗体中
                            //							((IMdiContainer)guiMain).MdiToolBarPanel.AddToolbar(active.Tools[i]);
                            active.Tools[i].Parent = guiMain.MdiToolBarPanel.TopContainer;
                            active.Tools[i].Show();
                        }
                    }
                }
            }


            //激活窗口菜单状态
            mdilist = AppMenuCommand.MidList;
            if (mdilist != null)
            {
                for (int j = 0; j < mdilist.Parent.MenuItems.Count; j++)
                {
                    if (mdilist.Parent.MenuItems[j] is AppMenuCommand)
                    {
                        stype = (AppMenuCommand)mdilist.Parent.MenuItems[j];
                        if (stype.ID == active.ID + "_MdiList")
                        {
                            stype.Checked = true;
                            break;
                        }
                    }
                }
            }

            //把子窗体中的菜单加入主窗体的菜单栏中
            if (active.Menus != null)
            {
                for (int j = 0; j < active.Menus.Length; j++)
                {
                    int pos = ((IMdiContainer)guiMain).MdiMainMenu.Buttons.Count - 1;
                    //刘李明删除的代码,菜单已经生成了,不过没有添加至菜单栏内
                    ((IMdiContainer)guiMain).MdiMainMenu.Buttons.Insert(pos + 1, active.Menus[j]);
                }
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="child"></param>
 public void RemoveChild(IMdiChild child)
 {
     _wm.Remove(child);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="child"></param>
 public void AddChild(IMdiChild child)
 {
     _wm.Add(child);
 }