WeifenLuo.WinFormsUI.Docking小应用
2014-04-22 18:00
393 查看
要用 WeifenLuo.WinFormsUI.Docking 首先要下载: WeifenLuo.WinFormsUI.Docking 。
在当前工程“解决方案 - 引用”中 >> 右击引用 >> 浏览 >> 找到你存放的 WeifenLuo.WinFormsUI.Docking
添加。
主窗体的 this.IsMdiContainer
=true; //设置主窗体为多文档窗体。
建议先复制到当前工程的 \bin\Debug 文件夹中。。。
DocumentStyle属性有四种形式:用的时候好像没有什么区别,不过DockingSdi
还是有点区别
DockingMdi 子窗体停靠在中间时,标签栏右侧显示小三角和关闭钮。
DockingWindow
子窗体停靠在中间时,标签栏右侧显示小三角和关闭钮。(感觉和DockingMdi相似)
DockingSdi 单个子窗体停靠在中间时,将没有标签栏。
SystemMdi
子窗体停靠在中间时,会报错(停靠状态无效)。(XX.Show(this.dockPanel1,DockState.Document); ) (XX=子窗体名)
拖动后的效果:
在主窗体中工具箱中加入 dockPanel
.
右击工具箱中的工具标题 >>选择项>> 在弹出的对话框中( 选择浏览>>找到你存放WeifenLuo.WinFormsUI.Docking的位置>>选择 - 打开>>确定)....这样,你就可以在工具栏中看到 DockPanel控件
主窗体:双击DockPanel 或拖入窗体中,设置你的DockPanel...Anchor属性:
Top, Bottom, Left, Right, Size属性:XXX,XXX(X=数字,设置你要的大小) 当然,你也可以在Dock属性:Fill
当不小心把停靠窗体关闭后,应该在主窗体写一个调出子窗体的点击事件....
要实现各个dockpanle子窗体之间的互动,例如,vs编辑器中,设计界面的时候,选择一个文本框,属性框中的属性随之改变,使用委托可以解决
限定子窗体停靠位置:
子窗体:
添加子窗体, using WeifenLuo.WinFormsUI.Docking;
CloseButton属性:子窗体在 dockPanel
中,标签中关闭钮是否起作用,true起作用
AutoHidePortion属性:
子窗体在 dockPanel 中,伸缩状态时高(或宽)的比例 0.25 X 100% = 25%
在dockPanel
中,Dock(Top,Right...)Portion ,在子窗体固定时,显示靠边时的宽(或高)比例 0.25 X 100% = 25%
子窗体与子窗体间的传值可以用委托进行传递,在子窗体声明委托,在主窗体调用委托即可!!
在当前工程“解决方案 - 引用”中 >> 右击引用 >> 浏览 >> 找到你存放的 WeifenLuo.WinFormsUI.Docking
添加。
主窗体的 this.IsMdiContainer
=true; //设置主窗体为多文档窗体。
建议先复制到当前工程的 \bin\Debug 文件夹中。。。
dockPanel1.DocumentStyle =DocumentStyle.DockingSdi ;
DocumentStyle属性有四种形式:用的时候好像没有什么区别,不过DockingSdi
还是有点区别
DockingMdi 子窗体停靠在中间时,标签栏右侧显示小三角和关闭钮。
DockingWindow
子窗体停靠在中间时,标签栏右侧显示小三角和关闭钮。(感觉和DockingMdi相似)
DockingSdi 单个子窗体停靠在中间时,将没有标签栏。
SystemMdi
子窗体停靠在中间时,会报错(停靠状态无效)。(XX.Show(this.dockPanel1,DockState.Document); ) (XX=子窗体名)
拖动后的效果:
在主窗体中工具箱中加入 dockPanel
.
右击工具箱中的工具标题 >>选择项>> 在弹出的对话框中( 选择浏览>>找到你存放WeifenLuo.WinFormsUI.Docking的位置>>选择 - 打开>>确定)....这样,你就可以在工具栏中看到 DockPanel控件
主窗体:双击DockPanel 或拖入窗体中,设置你的DockPanel...Anchor属性:
Top, Bottom, Left, Right, Size属性:XXX,XXX(X=数字,设置你要的大小) 当然,你也可以在Dock属性:Fill
/// <summary> 加载窗体停靠 </summary> private void LoadDock() { this.IsMdiContainer = true; dockPanel1.DocumentStyle = DocumentStyle.DockingSdi; Form2 Treev = new Form2(); //↘ Form3 Listv = new Form3(); // 实例化子窗体 Form4 Richt = new Form4(); //↗ Treev.Show(this.dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide);//停靠左侧收起 Listv.Show(this.dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.DockLeftAutoHide);//停靠左侧收起 Richt.Show(this.dockPanel1, DockState.Document); // Document 停靠中间 } #region =★=*=★=*=★= 加载与保存 布局 =★=*=★=*=★= /// <summary> 保存布局 </summary> private void SaveBock() { string uiFile = Path.Combine(Application.StartupPath, "CustomUI.xml"); dockPanel1.SaveAsXml(uiFile); } /// <summary> 加载布局 </summary> private void LoadBock() { string uiFile = Path.Combine(Application.StartupPath, "CustomUI.xml"); if (File.Exists(uiFile)) { WeifenLuo.WinFormsUI.Docking.DeserializeDockContent ddContent = new WeifenLuo.WinFormsUI.Docking.DeserializeDockContent(GetContentFromPersistString); dockPanel1.LoadFromXml(uiFile, ddContent); } } /// <summary> /// 加载布局 /// </summary> /// <param name="persistString"></param> /// <returns></returns> private IDockContent GetContentFromPersistString(string persistString) { try { if (persistString == typeof(Form2).ToString()) { return new Form2(); } if (persistString == typeof(Form3).ToString()) { return new Form3(); } if (persistString == typeof(Form4).ToString()) { return new Form4(); } } catch (Exception) { Console.WriteLine(persistString); } throw new Exception(); } #endregion //窗体加载 private void Form1_Load(object sender, EventArgs e) { this.IsMdiContainer = true; if (!File.Exists(@"CustomUI.xml")) /* 如果工程里没有指定的XML文档,则调用默认的布局,否则调用保存的布局 */ { this.LoadDock(); } else { this.LoadBock(); } } /* 退出前,保存布局 */ private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //this.SaveBock(); }
当不小心把停靠窗体关闭后,应该在主窗体写一个调出子窗体的点击事件....
要实现各个dockpanle子窗体之间的互动,例如,vs编辑器中,设计界面的时候,选择一个文本框,属性框中的属性随之改变,使用委托可以解决
限定子窗体停靠位置:
#region DockAreas属性:设置允许子窗体停靠位置 /// <summary>可以停靠在 dockPanel 上下左右四个位置, /// 但不允许子窗体停靠在 dockPanel 中间 /// </summary> private void DockNum4() { this.DockAreas = ((WeifenLuo.WinFormsUI.Docking.DockAreas) (((((WeifenLuo.WinFormsUI.Docking.DockAreas.Float | WeifenLuo.WinFormsUI.Docking.DockAreas.DockLeft) | WeifenLuo.WinFormsUI.Docking.DockAreas.DockRight) | WeifenLuo.WinFormsUI.Docking.DockAreas.DockTop) | WeifenLuo.WinFormsUI.Docking.DockAreas.DockBottom) )); } /// <summary> /// 可以停靠在 dockPanel 上下左右中 五个位置 /// </summary> private void DockNum5() { this.DockAreas = ((WeifenLuo.WinFormsUI.Docking.DockAreas) ((((((WeifenLuo.WinFormsUI.Docking.DockAreas.Float | WeifenLuo.WinFormsUI.Docking.DockAreas.DockLeft) | WeifenLuo.WinFormsUI.Docking.DockAreas.DockRight) | WeifenLuo.WinFormsUI.Docking.DockAreas.DockTop) | WeifenLuo.WinFormsUI.Docking.DockAreas.DockBottom) | WeifenLuo.WinFormsUI.Docking.DockAreas.Document) /* 允许子窗体停靠中间 */ )); } #endregion
子窗体:
添加子窗体, using WeifenLuo.WinFormsUI.Docking;
using WeifenLuo.WinFormsUI.Docking;
public partial class Form2 :DockContent //把继承修改为 DockContent .
CloseButton属性:子窗体在 dockPanel
中,标签中关闭钮是否起作用,true起作用
AutoHidePortion属性:
子窗体在 dockPanel 中,伸缩状态时高(或宽)的比例 0.25 X 100% = 25%
在dockPanel
中,Dock(Top,Right...)Portion ,在子窗体固定时,显示靠边时的宽(或高)比例 0.25 X 100% = 25%
子窗体与子窗体间的传值可以用委托进行传递,在子窗体声明委托,在主窗体调用委托即可!!
相关文章推荐
- WeifenLuo.WinFormsUI.Docking应用笔记:添加双击文档选项卡标题自动关闭功能
- C# WeifenLuo.WinFormsUI.Docking.dll 应用之问题集 反射动态调用winform窗体
- C# WeifenLuo.WinFormsUI.Docking.dll 应用之问题集 控件无法访问已释放的对象。
- C# WeifenLuo.WinFormsUI.Docking.dll 应用之问题集 子窗体访问父窗体方法
- 开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用
- WeifenLuo.WinFormsUI.Docking.dll的用法
- 界面布局控件-WeifenLuo.WinFormsUI.Docking
- WeiFenLuo.winFormsUI.Docking.dll的使用
- WeifenLuo.WinFormsUI.Docking.DockContent 中Tab事件
- Winform- 界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WeiFenLuo.winFormsUI.Docking.dll的使用(停靠效果)
- WeifenLuo.WinFormsUI.Docking"的使用 z
- [转]WeiFenLuo.winFormsUI.Docking.dll的使用(简单入门版)
- 强大的c#.net应用程序winform框架类库-WeifenLuo.WinFormsUI.Docking.dll
- 基于WeifenLuo.WinFormsUI.Docking界面布局控件的Winform框架
- WeifenLuo.WinFormsUI.Docking学习
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- 布局控件 “WeifenLuo.WinFormsUI.Docking”
- WeifenLuo.WinFormsUI.Docking界面布局控件
- 解决vs2010添加WeifenLuo.WinFormsUI.Docking.DockPanel.dll文件报错问题