C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果
很酷的效果,很值得好好去学习的哈。
重置工具箱:
新建一个WinForm程序,项目名称为TestDockPanelControl。选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--->>右键--->>选择项--->>浏览---
>>weiFenLuo.winFormsUI.Docking.dll--->>确定.此时工具箱出现DockPanel控件。这以上步骤仅是把DockPanel控件添加到工具箱中。
接下来看看DockPanel控件的停靠效果是如何实现的。
主窗体设置:(Form1窗体默认是主窗体)
Form1窗体的属性设置
在原有的Form1窗体上设置窗体的Text属性为主窗体,IsMdiContainer属性为true也就是设置为MDI程序(为了体验DockPanel控件的演示效果)。FormBorderStyle设置为
FixedSingle,StartPosition设置为CenterScreen,WindowState设置为Maximized。
Form1窗体的控件布局
将工具箱下的MenuStrip控件和DockPanel控件拖放到窗体上,设置DockPanel控件的Dock属性为Fill.设置MenuStrip的子菜单选项设置值如下图所示:

停靠窗体设置(FormDock为子窗体):
添加一个新的WinForm窗体命名为FormDock,设置Text值为停靠窗体,Size值为207,382此处值可以根据实际的需要情况而定并非唯一。
主要点:在代码中修改窗体继承于DockContent,要添加using WeifenLuo.WinFormsUI.Docking命名空间
修改前代码:
public partial class FormDock :Form
{
public FormDock()
{
InitializeComponent();
}
}
修改后代码:
public partial class FormDock :DockContent
{
public FormDock()
{
InitializeComponent();
}
}
回到主窗体Form1窗体,在Form1窗体中显示要停靠的窗体(FormDock)
代码如下:
//底部
private void bottomToolStripMenuItem_Click(object sender, EventArgs e)
{
FormDock frm = new FormDock();
frm.Text = "底部停靠";
frm.Show(this.dockPanel1);
frm.DockTo(this.dockPanel1, DockStyle.Bottom);
}
//全屏
private void fillToolStripMenuItem_Click(object sender, EventArgs e)
{
FormDock frm = new FormDock();
frm.Text = "全屏停靠";
frm.Show(this.dockPanel1);
frm.DockTo(this.dockPanel1, DockStyle.Fill);
}
//左侧
private void leftToolStripMenuItem_Click(object sender, EventArgs e)
{
FormDock frm = new FormDock();
frm.Text = "左侧停靠";
frm.Show(this.dockPanel1);
frm.DockTo(this.dockPanel1, DockStyle.Left);
}
//None
private void noneToolStripMenuItem_Click(object sender, EventArgs e)
{
FormDock frm = new FormDock();
frm.Text = "NONE";
frm.Show(this.dockPanel1);
frm.DockTo(this.dockPanel1, DockStyle.None);
}
//右侧
private void rightToolStripMenuItem_Click(object sender, EventArgs e)
{
FormDock frm = new FormDock();
frm.Text = "右侧停靠";
frm.Show(this.dockPanel1);
frm.DockTo(this.dockPanel1, DockStyle.Right);
}
//顶部
private void topToolStripMenuItem_Click(object sender, EventArgs e)
{
FormDock frm = new FormDock();
frm.Text = "顶部停靠";
frm.Show(this.dockPanel1);
frm.DockTo(this.dockPanel1, DockStyle.Top);
}
以上的就是用DockPanel控件来使窗体进行停靠的整个操作。
效果图如下所示:


DockPanel控件还可以拖放子窗体,可以把子窗体拖放到上左中右下等位置
只要把DockPanel控件的的AllowDrop设置为true就可以了。效果图如下所示;

C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果的更多相关文章
- WeiFenLuo.winFormsUI.Docking.dll的使用(停靠效果)
1. 重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--- ...
- Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用
WeiFenLuo.WinFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可实现像Visual Studio的窗口停靠.拖拽等功能.WeifenLuo.Win ...
- 学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll
控件dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent, DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行 ...
- 开源布局控件 WeifenLuo.WinFormsUI.Docking.dll使用
WeifenLuo.WinFormsUI.Docking是一个很强大的界面布局控件,可以保存自定义的布局为XML文件,可以加载XML配置文件.! 先看一下效果 使用说明: 1.新建一个WinForm程 ...
- weiFenLuo.winFormsUI.Docking.dll学习
引用方法: 1.建立一个WinForm工程,默认生成了一个WinForm窗体. 2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll. 3 ...
- WeifenLuo.WinFormsUI.Docking.dll的用法
基本框架 说明 weiFenLuo.winFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可以实现像Visual Studio的窗口停靠.拖拽等功能.Weif ...
- WeifenLuo.WinFormsUI.Docking"的使用 z
在伍华聪的博客中,看到布局控件"WeifenLuo.WinFormsUI.Docking",发现的确是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件. ...
- WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)
WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"Weife ...
- Winform- 界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
布局控件"WeifenLuo.WinFormsUI.Docking"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的. 实 ...
随机推荐
- 解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错
前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,my ...
- 【17】迭代器模式(Iterator Pattern)
一.引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合.在这一章中,将介绍一下迭代器模式. 二.迭代器模式的介绍 迭代器是针对集合 ...
- PHP中类和对象的相关函数
class_exists 判断一个类是否存在,参数为一个名字! interface_exists 判断一个接口是否存在,参数也是为一个名字! method_exists 判断一个方法是否存在! 需要两 ...
- longing加载中实例
利用图片播放 <div class="wrap" id="wrap" style="position: inherit; height: 604 ...
- IDEA项目搭建四——使用Mybatis实现Dao层
一.引入mybatis及mysql的jar包 可以从阿里云上面查找版本,db操作放在dao层所以打开该层的pom.xml文件,找到<dependencies>节点增加两个引入 <de ...
- Oracle 用户、角色管理简介
Oracle 用户.角色管理简介 by:授客 QQ:1033553122 创建用户 形式1:创建名为testacc2的用户 CREATE USER testacc2 IDENTIFIED BY abc ...
- Python Django框架笔记(五):模型
#前言部分来自Django Book (一) 前言 大多数web应用本质上: 1. 每个页面都是将数据库的数据以HTML格式进行展现. 2. 向用户提供修改数据库数据的方法.(例如:注册.发表评 ...
- go语言练习:sha256、sha512哈希算法
package main import ( "fmt" "crypto/sha256") func main() { str:="test hash. ...
- 从零自学Java-2.初步理解Java程序使如何工作的
1.学习Java应用程序是如何工作的 2.构成一个应用程序 3.向应用程序传递参数 4.学习Java程序是如何组织的 5.在应用程序中创建一个对象 程序Root:输出225的正平方根 package ...
- PHP正则自动验证传入数据
本文出至:新太潮流网络博客 /** * [is_string_regular_type 正则自动验证传入数据] * @E-mial wuliqiang_aa@163.com * @TIME 2017- ...