界面布局控件-WeifenLuo.WinFormsUI.Docking
来源:互联网 发布:仙侠游戏哪个好玩知乎 编辑:程序博客网 时间:2024/06/01 10:35
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类01 using WeifenLuo.WinFormsUI.Docking;
02
03 namespace WeiFenLuoDockPanel
04 {
05 public partial class Form1 : DockContent
06 {
07 public Form1()
08 {
09 InitializeComponent();
10 }
11 }
12 }
继承DockContent类后,窗体会多出一部分属性,其实列举几个常用的属性
CloseButton :指示是否启用关闭按钮,默认为True
CloseButtonVisible:是否显示关闭按钮,默认为True
ShowHint:设置窗体显示的初始位置
TabText:Tab标签上显示的文字,这个与Form的TEXT不同,当窗体显示到布局控件上时,FORM的TEXT是不会显示的
5.准备工作做好了,接写来该如何把窗体Show出来呢?在FrmMain窗体中添加如下字段.1 private Form1 f1 = new Form1();
2 private Form2 f2 = new Form2();
3 private Form2 f3 = new Form3();
在Load事件中添加如下代码1 f1.Show(dockPanel1);
2 f2.Show(dockPanel1);
3 f3.Show(dockPanel1);
Ok, Ctrl+F5一把..效果如下
(PS:可能有人会问,如何控制每个窗体显示的位置呢 ? 其实就是上面提到的ShowHint属性来控制)
保存XML配置文件
如果在程序使用过程中,操作人改变了布局样式,且想以后都继续保持那样的样式,那我们就要用到SaveAsXml这个方法了
1 dockPanel1.SaveAsXml(Path.Combine(Application.StartupPath, "CustomUI.xml"));
SaveAsXml方法有四种重载方式,其中最简单的一种就是带一个字符串参数的那种,参数为XML文件的存放路径,,,
此XML文件中保存的就是一些布局参数,有兴趣的童鞋可以打开详细看看...
加载XML配置文件
如果想利用保存的布局样式,就需要加载保存的XML配置文件,
LoadFromXml方法用来加载配置..
原型:DockPanel.LoadFromXml(string fileName,DeserializeDockContent deserializeContent)
fileName 文件名
DeserializeDockContent是一个委托,在WeifenLuo.WinFormsUI.Docking命名空间中,此委托用来序列化配置文件中布局窗体的实例,
看代码,,1 string uiFile = Path.Combine(Application.StartupPath, "CustomUI.xml");
2 if (File.Exists(uiFile))
3 {
4 DeserializeDockContent ddContent = new DeserializeDockContent(GetContentFromPersistString);
5 dockPanel1.LoadFromXml(uiFile,ddContent);
6 }
01 #region 加载布局
02 private IDockContent GetContentFromPersistString(string persistString)
03 {
04 try
05 {
06 if (persistString == typeof(Form1).ToString())
07 {
08 return new Form1();
09 }
10 if (persistString == typeof(Form2).ToString())
11 {
12 return new Form2();
13 }
14 if (persistString == typeof(Form3).ToString())
15 {
16 return new Form3();
17 }
18 }
19 catch (Exception ex)
20 {
21 Console.WriteLine(persistString);
22 }
23 throw new Exception();
24 }
25
26 #endregion
先看一下效果
使用说明:
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类01 using WeifenLuo.WinFormsUI.Docking;
02
03 namespace WeiFenLuoDockPanel
04 {
05 public partial class Form1 : DockContent
06 {
07 public Form1()
08 {
09 InitializeComponent();
10 }
11 }
12 }
继承DockContent类后,窗体会多出一部分属性,其实列举几个常用的属性
CloseButton :指示是否启用关闭按钮,默认为True
CloseButtonVisible:是否显示关闭按钮,默认为True
ShowHint:设置窗体显示的初始位置
TabText:Tab标签上显示的文字,这个与Form的TEXT不同,当窗体显示到布局控件上时,FORM的TEXT是不会显示的
5.准备工作做好了,接写来该如何把窗体Show出来呢?在FrmMain窗体中添加如下字段.1 private Form1 f1 = new Form1();
2 private Form2 f2 = new Form2();
3 private Form2 f3 = new Form3();
在Load事件中添加如下代码1 f1.Show(dockPanel1);
2 f2.Show(dockPanel1);
3 f3.Show(dockPanel1);
Ok, Ctrl+F5一把..效果如下
(PS:可能有人会问,如何控制每个窗体显示的位置呢 ? 其实就是上面提到的ShowHint属性来控制)
保存XML配置文件
如果在程序使用过程中,操作人改变了布局样式,且想以后都继续保持那样的样式,那我们就要用到SaveAsXml这个方法了
1 dockPanel1.SaveAsXml(Path.Combine(Application.StartupPath, "CustomUI.xml"));
SaveAsXml方法有四种重载方式,其中最简单的一种就是带一个字符串参数的那种,参数为XML文件的存放路径,,,
此XML文件中保存的就是一些布局参数,有兴趣的童鞋可以打开详细看看...
加载XML配置文件
如果想利用保存的布局样式,就需要加载保存的XML配置文件,
LoadFromXml方法用来加载配置..
原型:DockPanel.LoadFromXml(string fileName,DeserializeDockContent deserializeContent)
fileName 文件名
DeserializeDockContent是一个委托,在WeifenLuo.WinFormsUI.Docking命名空间中,此委托用来序列化配置文件中布局窗体的实例,
看代码,,1 string uiFile = Path.Combine(Application.StartupPath, "CustomUI.xml");
2 if (File.Exists(uiFile))
3 {
4 DeserializeDockContent ddContent = new DeserializeDockContent(GetContentFromPersistString);
5 dockPanel1.LoadFromXml(uiFile,ddContent);
6 }
01 #region 加载布局
02 private IDockContent GetContentFromPersistString(string persistString)
03 {
04 try
05 {
06 if (persistString == typeof(Form1).ToString())
07 {
08 return new Form1();
09 }
10 if (persistString == typeof(Form2).ToString())
11 {
12 return new Form2();
13 }
14 if (persistString == typeof(Form3).ToString())
15 {
16 return new Form3();
17 }
18 }
19 catch (Exception ex)
20 {
21 Console.WriteLine(persistString);
22 }
23 throw new Exception();
24 }
25
26 #endregion
- 界面布局控件-WeifenLuo.WinFormsUI.Docking
- WeifenLuo.WinFormsUI.Docking界面布局控件
- 界面布局控件-WeifenLuo.WinFormsUI.Docking
- 界面布局控件---WeifenLuo.WinFormsUI.Docking
- 界面布局控件-WeifenLuo.WinFormsUI.Docking
- 布局控件 “WeifenLuo.WinFormsUI.Docking”
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- C# WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- 用 C 语言编写 Windows 服务程序的五个步骤
- 偶得一文,吾望为之
- 【转】突破sql 注入过滤Union+SELECT 继续射下去
- tomcat 6 发布应用后,访问jsp报错org.apache.jasper.JasperException: java.lang.NullPointerException的解决办法。
- 乔,你终于开博了
- 界面布局控件-WeifenLuo.WinFormsUI.Docking
- XMPP协议rfc6121详解(1)-联系人管理
- SAP-FICO-KSS2成本划分错误
- Cyanogen Mod 使用心得
- 读架构师应该知道的97件事
- Oracle Partition 分区详细总结
- 开散列
- 通过分区(Partition)提升MySQL性能
- NGINX的REWRITE配置