學習winform第三方界面weiFenLuo.winFormsUI.Docking.dll


  1. 控件dockpanel中提供了幾個可用的類, 重要的有兩個, 一是DockPanel, 一是DockContent, 
     DockPanel是從panel繼承出來的, 用於提供可浮動的dock的子窗口進行浮動和dock的場所, 
     DockContent是從form類中繼承出來的, 用於提供可浮動的窗口基類. 就是說: DockContent對象可以在DockPanel對象中任意貼邊, 浮動, TAB化等.

     

  2. 引用—>添加引用—>瀏覽—>weiFenLuo.winFormsUI.Docking.dll。
  3. 工具箱—>右鍵—>選擇項—>.net組件—>瀏覽—>weiFenLuo.winFormsUI.Docking.dll—>在工具箱出現dockPanel。
  4. 將dockPanel拖到窗體Form1上,設置Dock屬性,我設置的是:Fill。窗體屬性IsMdiContainer:True。
  5.  在代碼中修改窗體繼承於DockContent。           public partial class Form2 : DockContent
  6. 在主窗體中:
    public partial class Form1 : DockContent
        {
            //子窗體
            private FrmCustomer frmCustomer = new FrmCustomer();
            private b_employee employee = new b_employee ();
    
            public Form1()
            {
                InitializeComponent();
                frmCustomer.Show(this.dockPanel1);
                employee.Show(this.dockPanel1);
                System.Threading.Thread.Sleep(50);
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Form2 frm = new Form2();
                frm.Show(this.dockPanel1);
                //窗體Form2添加到主窗體左邊緣
                frm.DockTo(this.dockPanel1,DockStyle.Left);
            }
    }

     

  7. 在主窗體中添加右鍵事件,設置dockPanel的contentMenuScrip為拖拽的menuscrip,窗體添加
     /// <summary>
            /// 關閉所有窗體
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void menu_Window_CloseAll_Click(object sender, EventArgs e)
            {
                CloseAllDocuments();
            }
    
            public void CloseAllDocuments()
            {
                if (dockPanel1.DocumentStyle==DocumentStyle.SystemMdi)
                {
                    foreach (Form form in MdiChildren)
                    {
                         form.Close();
                    }
                }
                    else
                    {
                        IDockContent[] documents=dockPanel1.DocumentsToArray();
                        foreach (IDockContent content in documents)
                        {
                            content.DockHandler.Close();
                        }
                    }
                }
            /// <summary>
            /// 關閉其他窗體
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void menu_Window_CloseOther_Click(object sender, EventArgs e)
            {
                if (dockPanel1.DocumentStyle == DocumentStyle.SystemMdi)
                {
                    Form activeMdi = ActiveMdiChild;
                    foreach (Form form in MdiChildren)
                    {
                        if (form != activeMdi)
                        {
                            form.Close();
                        }
                    }
                }
                else 
                {
                    foreach (IDockContent document in dockPanel1.DocumentsToArray())
                    {
                        if (!document.DockHandler.IsActivated)
                        {
                            document.DockHandler.Close();
                        }
                    }
                }
            }
    
            /// <summary>
            /// 找到窗體
            /// </summary>
            /// <param name="text"></param>
            /// <returns></returns>
            private DockContent FindDocument(string text) 
            {
                if (dockPanel1.DocumentStyle == DocumentStyle.SystemMdi)
                {
                    foreach (Form form in MdiChildren)
                    {
                        if (form.Text == text)
                        {
                            return form as DockContent;
                        }
                    }
                    return null;
                }
                else {
                    foreach (DockContent  content in dockPanel1.Documents)
                    {
                        if (content.DockHandler.TabText==text)
                        {
                            return content;
                        }
                    }
    
                    return null;
                }
            }
            public DockContent ShowContent(string caption, Type formType)
            {
                DockContent frm = FindDocument(caption);
                if (frm==null)
                {
                    // frm = ChildWinManagement.LoadMdiForm(Portal.gc.MainDialog, formType) as DockContent;
                }
                frm.Show(this.dockPanel1);
                frm.BringToFront();//將控件帶到前面
                return frm;
            }

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM