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"是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的. 实 ...
随机推荐
- springboot使用问题总结
技术说明:eclipse+springboot+mysql+mybatis 问题一:应用访问报错:Access denied for user 'root'@'localhost' (using pa ...
- 关于List、Map循环时,进行删除的结论
通过一些测试发现,List 使用for(int i=0;i<list.size();i++),可以正常删除,不会抛出异常:使用增强for循环,for(String x:list)会抛出Concu ...
- 使用Java对字符串进行升序排序
Java对字符串的很多API和功能是JavaWeb能广泛发展的基础,下面是一道经典的字符串操作题,需要边查JAVASE的API对每个步骤进行操作. 题目:给一个字符串,"34 12 -8 0 ...
- java中return、break、continue的区别
1.return @Testpublic void testReturn(){ for (int j = 1; j < 3; j++) { for (int i = 1; i < 5; i ...
- 过滤器(Filter)与拦截器(Interceptor)的区别
1 .拦截器是基于java的反射机制的,而过滤器是基于函数回调. 2 .拦截器不依赖与servlet容器,过滤器依赖与servlet容器. 3 .拦截器只能对action请求起作用,而过滤器则可以对几 ...
- jsp登录显示
1.登录成功设置session request.getSession().setAttribute("user", user); 2.前台test <div class=&q ...
- Echarts柱状图百分比显示
option = { tooltip: { trigger: 'item', formatter:'{c}%' //这是关键,在需要的地方加上就行了 }, grid: { borderWidth: 0 ...
- [Objective-C] 从NSInteger说开去
在iOS开发过程中,我一直习惯于使用C语法里的基本类型,而很少用(除非必须使用)Foundation的数据类型.最近看了一些资料,发现自己这样写可能有风险,虽然目前没遇到过相关的问题,但这是非常需要注 ...
- Linux find查找指定文件 按照名称 然后cp拷贝到指定目录且指定文件名
最近有一个需求,需要将指定目录下的文件(已知文件名)复制到另一个指定的目录且重命名文件. 要求: 在var目录下会定义系统的启动日志相关信息,请查找对应的boot.log文件,并把它备份一份到var/ ...
- Windows桌面.exe程序安装、卸载、升级测试用例
一.安装 1) 系统:XP.win 7.win 8.win 10 2)安全类型软件:360杀毒.360安全卫士.金山毒霸.百度杀毒.腾讯电脑管家等. 3)同类型软件兼容 4)用户名称:中文用户.英文用 ...