• 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);
            }
    
        }

      

  • 相关阅读:
    CAS在tomcat6.0.18下的SSO
    CAS在tomcat6.0.18下的SSO
    PL/SQL 0.几秒出结果,SQL效率一定高吗?
    优化大型复杂SQL
    C++ ProtoBuf小结
    protobuf c++入门
    Oracle_inner join,left join,right join,full join 的区别,用例子说明
    Linux_查看修改SWAP大小
    Oracle 优化器
    Oracle 行转列两种方法
  • 原文地址:https://www.cnblogs.com/cxeye/p/4837160.html
Copyright © 2020-2023  润新知