Пример #1
0
        /// <summary>
        /// 根据接口中的DockStyle设置WeiFenLuo的dock方式
        /// </summary>
        public static WeifenLuo.WinFormsUI.Docking.DockState SimplifyDockstate(Interfaces.MapWinGISDockStyle dockStyle)
        {
            switch (dockStyle)
            {
            case Interfaces.MapWinGISDockStyle.Bottom:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockBottom);

            case Interfaces.MapWinGISDockStyle.BottomAutoHide:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockBottomAutoHide);

            case Interfaces.MapWinGISDockStyle.Left:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockLeft);

            case Interfaces.MapWinGISDockStyle.LeftAutoHide:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide);

            case Interfaces.MapWinGISDockStyle.Right:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockRight);

            case Interfaces.MapWinGISDockStyle.RightAutoHide:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockRightAutoHide);

            case Interfaces.MapWinGISDockStyle.Top:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockTop);

            case Interfaces.MapWinGISDockStyle.TopAutoHide:
                return(WeifenLuo.WinFormsUI.Docking.DockState.DockTopAutoHide);

            case Interfaces.MapWinGISDockStyle.None:
                return(WeifenLuo.WinFormsUI.Docking.DockState.Float);

            default:
                return(WeifenLuo.WinFormsUI.Docking.DockState.Float);
            }
        }
Пример #2
0
        /// <summary>
        /// 返回一个能够用作添加可停靠内容(dockable content)到MainProgram的系统panel。
        /// 先创建一个可停靠Form,再在Form里面添加一个Panel,返回这个Panel给调用者。
        /// </summary>
        public System.Windows.Forms.Panel CreatePanel(string caption, Interfaces.MapWinGISDockStyle dockStyle)
        {
            if (m_Panels.ContainsKey(caption))
            {
                if (m_Panels[caption].Controls["ContentPanel"] != null)
                {
                    return((System.Windows.Forms.Panel)(m_Panels[caption].Controls["ContentPanel"]));
                }
                return((System.Windows.Forms.Panel)(m_Panels[caption].Controls[0]));
            }

            Panel contentPanel = new Panel();

            contentPanel.Name = "ContentPanel";
            contentPanel.Dock = DockStyle.Fill;

            MWDockPanel floatPanel = new MWDockPanel(caption);

            floatPanel.ShowHint = WeifenLuo.WinFormsUI.Docking.DockState.Float;
            floatPanel.Controls.Add(contentPanel);
            floatPanel.FormClosing += new FormClosingEventHandler(MarkClosed);
            floatPanel.Show(Program.frmMain.dckPanel);
            floatPanel.Icon = MapWinGIS.MainProgram.Properties.Resources.MapWinGIS;
            if (dockStyle.ToString() == DockStyle.None.ToString())
            {
                floatPanel.DockState = WeifenLuo.WinFormsUI.Docking.DockState.Float;
            }
            else
            {
                floatPanel.DockState = SimplifyDockstate(dockStyle);
            }

            //我希望创建该窗体时也要创建一个该窗体显示与关闭的菜单
            Program.frmMain.m_Menu.AddMenu("mnu" + caption, "mnuRestoreMenu", (object)null, caption).Checked = floatPanel == null ? false : true;

            m_Panels.Add(caption, floatPanel);
            m_OnCloseHandlers.Add(caption, null); //创建一个窗体时,要添加进去
            return(contentPanel);
        }