Winform- 界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用

  布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大、美观、不亚于商业控件。而且控件使用也是比较简单的。

  实现步骤

     1)引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll。
     2)主窗体改名为FormMainWnd,并将属性IsMdiContainer:True。
     3)工具箱—>右键—>选择项—>.net组件—>浏览—>weiFenLuo.winFormsUI.Docking.dll—>在工具箱出现dockPanel。
     4)将dockPanel拖到窗体FormMainWnd上,设置Dock属性为:Fill。

 

  添加FORM1窗体

  实现代码如下:

    public partial class Form1 : WeifenLuo.WinFormsUI.Docking.DockContent
    {
        private FormMainWnd mainForm;
        public Form1(FormMainWnd f)
        {
            mainForm = f;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            mainForm.ShowFrom<Form2>();
        }
    }

  添加FORM2窗体

  实现代码如下:

    public partial class Form2 : WeifenLuo.WinFormsUI.Docking.DockContent  
    {
        public Form2()
        {
            InitializeComponent();
        }
    }

  将FORM1和FORM2的HIDEONCLOSE属性设为TRUE

 

  主窗体的代码

    public partial class FormMainWnd : Form
    {

        
        public FormMainWnd()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //显示左边FORM1工具箱效果
            dockPanel1.DocumentStyle = DocumentStyle.DockingMdi;
            Form1 form = new Form1(this);
            form.Show(dockPanel1, DockState.DockLeft);

            //显示右边FORM2
            Form2 form2 = new Form2();
            ShowFrom<Form2>();
        }


        public void ShowFrom<T>() where T : DockContent, new()
        {
            foreach (var child in this.dockPanel1.Documents)
            {
                var dFrm = child as T;
                if (dFrm != null)
                {
                    dFrm.Activate();
                    return;
                }
            }
            new T().Show(dockPanel1);
        }

    }

 

  

posted @ 2015-09-25 08:54  春天又来了  阅读(1091)  评论(0编辑  收藏  举报