WeifenLuo.WinFormsUI.Docking.dll使用

43 篇文章 1 订阅

WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件.!

先看一下效果


使用说明:

1.新建一个WinForm程序,创建4个窗体,FrmMain,窗口1,窗口2,窗口3

2.工具箱->选择项->浏览 选择WeifenLuo.WinFormsUI.Docking.dll动态库, 确定后,工具箱中会多出一个DockPanel控件

3.FrmMain窗体设置为MDI窗体, 即IsMdiContainer属性设置为True,拖入一个DockPanel控件,Dock属性设置为Fill

4.在解决方案中添加引用WeifenLuo.WinFormsUI.Docking.dll,窗口1,窗口2,窗口3中都引入命名空间using WeifenLuo.WinFormsUI.Docking;

把默认继承的Form去掉,全部继承DockContent类



using WeifenLuo.WinFormsUI.Docking;   

namespace WeiFenLuoDockPanel 

{

     public partial class Form1 :DockContent

   {

    public Form1()

    {

       InitializeComponent();

    }

  }



继承DockContent类后,窗体会多出一部分属性,其实列举几个常用的属性

CloseButton :指示是否启用关闭按钮,默认为True

CloseButtonVisible:是否显示关闭按钮,默认为True

ShowHint:设置窗体显示的初始位置

TabText:Tab标签上显示的文字,这个与Form的TEXT不同,当窗体显示到布局控件上时,FORM的TEXT是不会显示的

5.准备工作做好了,接写来该如何把窗体Show出来呢?在FrmMain窗体中添加如下字段.



private Form1 f1 =new Form1(); 

 private Form2 f2 = newForm2();

  private Form2 f3 = newForm3(); 



在Load事件中添加如下代码



f1.Show(dockPanel1); 

 f2.Show(dockPanel1);

  f3.Show(dockPanel1); 



Ok, Ctrl+F5一把..效果如下


(PS:可能有人会问,如何控制每个窗体显示的位置呢 ? 其实就是上面提到的ShowHint属性来控制)

保存XML配置文件

如果在程序使用过程中,操作人改变了布局样式,且想以后都继续保持那样的样式,那我们就要用到SaveAsXml这个方法了



dockPanel1.SaveAsXml(Path.Combine(Application.StartupPath,"CustomUI.xml")); 



SaveAsXml方法有四种重载方式,其中最简单的一种就是带一个字符串参数的那种,参数为XML文件的存放路径,,,

此XML文件中保存的就是一些布局参数,有兴趣的童鞋可以打开详细看看...

加载XML配置文件

如果想利用保存的布局样式,就需要加载保存的XML配置文件,

LoadFromXml方法用来加载配置..

原型:DockPanel.LoadFromXml(stringfileName,DeserializeDockContent deserializeContent)

fileName 文件名

DeserializeDockContent是一个委托,在WeifenLuo.WinFormsUI.Docking命名空间中,此委托用来序列化配置文件中布局窗体的实例,

看代码,,



 string uiFile = Path.Combine(Application.StartupPath,"CustomUI.xml");      

 if (File.Exists(uiFile))

 {

      DeserializeDockContentddContent = new DeserializeDockContent(GetContentFromPersistString); 

      dockPanel1.LoadFromXml(uiFile,ddContent);

  } 



 #region 加载布局          

private IDockContentGetContentFromPersistString(string persistString)

{

      try

     {

         if (persistString ==typeof(Form1).ToString())

         {

             return new Form1();

         }

         if (persistString ==typeof(Form2).ToString())

         {

             return newForm2();

         }

         if (persistString ==typeof(Form3).ToString())

         {

             return newForm3();

         }

     }

     catch (Exception ex)

     {

          Console.WriteLine(persistString);

      }

      throw new Exception();

}

 #endregion 

http://www.cnblogs.com/lppcoding/archive/2010/11/30/1891804.html

控件下载http://sourceforge.net/projects/dockpanelsuite/


1.说明

weiFenLuo.winFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可以实现像Visual Studio的窗口停靠、拖拽等功能。WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件。

该动态库源自开源项目DockPanelSuite,原始下载链接如下:

http://sourceforge.net/projects/dockpanelsuite/files/?source=navbar

但目前,该动态库已经改至以下链接进行下载与维护:

https://github.com/dockpanelsuite/dockpanelsuite

可下载其源码、可直接使用的dll及示例程序,目前已更新至2.8,可在VS2012环境下使用。

2.使用

dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent

DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行浮动和dock的场所,
DockContent是从form类中继承出来的, 用于提供可浮动的窗口基类. 就是说: DockContent对象可以在DockPanel对象中任意贴边, 浮动, TAB化等.  

  添加引用:
     1)引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll。
     2)窗体属性IsMdiContainer:True。
     3)工具箱—>右键—>选择项—>.net组件—>浏览—>weiFenLuo.winFormsUI.Docking.dll—>在工具箱出现dockPanel。
     4)将dockPanel拖到窗体Form1上,设置Dock属性为:Fill。
  停靠窗体:
     1.新建一个WinForm窗体Form2。
     2.在代码中修改窗体继承于DockContent。
     public partial class Form2 : DockContent
     3.在主窗体Form1中显示停靠窗体。
     private void Form1_Load(object sender, EventArgs e)
     {
       Form2 form2 = new Form2();
       form2.Show(this.dockPanel1);
       form2.DockTo(this.dockPanel1, DockStyle.Left);
     }

3.在线资源示例

讨论比较详细的在线示例是http://www.cnblogs.com/wuhuacong/archive/2009/07/09/1520082.html博客的帖子,其界面显示如下:

强大的c#.net应用程序winform框架类库-WeifenLuo.WinFormsUI.Docking.dll

其中除上面的菜单之外,其他部分的窗体均可浮动可控制。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值