开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用
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博客的帖子,其界面显示如下:
其中除上面的菜单之外,其他部分的窗体均可浮动可控制。
开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用的更多相关文章
- Winform- 界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的. 实 ...
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)
WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"Weife ...
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 转自:http://www.cnblogs.com/wuhuacong/arch ...
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二)
WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件.有兴趣的同 ...
- Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用
WeiFenLuo.WinFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可实现像Visual Studio的窗口停靠.拖拽等功能.WeifenLuo.Win ...
- WeifenLuo.WinFormsUI.Docking.dll的用法
基本框架 说明 weiFenLuo.winFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可以实现像Visual Studio的窗口停靠.拖拽等功能.Weif ...
- WeiFenLuo.winFormsUI.Docking.dll的使用(停靠效果)
1. 重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--- ...
- 学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll
控件dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent, DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行 ...
- weiFenLuo.winFormsUI.Docking.dll学习
引用方法: 1.建立一个WinForm工程,默认生成了一个WinForm窗体. 2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll. 3 ...
随机推荐
- .net 将excel转成html文件
最近在做一个打印预览功能,但是开始没有头绪后来用excel做了一个模板,然后根据excel模板来生成新的excel并将其存储为html,可以通过http请求在浏览器中读取,并且打印,其他的不多说.方法 ...
- C#源码大汇总
C#高仿QQ2013可在广域网部署聊天系统GG叽叽 动态显示硬盘分区容量饼图 自定义ProgressBar控件高仿Win8进度条 多皮肤精美在线QQ悬浮客服插件 jQuery仿天猫首页多格焦点图片轮播 ...
- python学习之socket创建html服务器
#coding:utf-8 import socket def process_request(request): request.recv(1024)#读取接受的字节 request.send(&q ...
- CentOS安装libpcap
1.安装GCC: yum -y install gcc-c++ 2.安装flex: yum -y install flex 没有flex,直接安装libpcap会提示"Your o ...
- java----线程篇
一个线程是进程内的一个单一的顺序控制流程图,多线程是指一个进程可以同时运行几个任务,每个任务由一个线程来完成.即多个线程可以同时运行,并且在一个进程内执行不同的任务. 1.创建线程两种方法方法一, 继 ...
- PyQt4学习笔记2:事件和信号
事件是任何 GUI 程序中很重要的部分.所有 GUI 应用都是事件驱动的.一个应用对其生命期产生的不同的事件类型做出反应.事件是主要由应用的用户产生.但是,也可以通过其他方法产生,比如,网络通信,窗口 ...
- C# 读取oracle 中文乱码的解决方案
用OracleDataAccess.dll访问oracle数据库,遇到中文乱码的情况. 解决方案如下: 1查看字符集编码, 在数据库服务器端 启动 sqlplus SQL->select use ...
- 深入浅出话XAML-学习笔记
第一章 XAML是什么? 1.1XAML之前 *设计师的设计更不上程序逻辑的变化 *程序员未能完全实现设计师提供的效果图 *效果图与程序功能不能完全匹配 *从效果图到软件UI的转化耗费很多时间 1.2 ...
- Could not retrieve mirrorlist http://mirrorlist.centos.org || PYCURL ERROR 6
yum:Could not retrieve mirrorlist http://mirrorlist.centos.org || PYCURL ERROR 6 通过centos安装openldap的 ...
- P1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会
裸的强连通 ; type node=record f,t:longint; end; var n,m,dgr,i,u,v,num,ans:longint; bfsdgr,low,head,f:arra ...