WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)

摘要:
使用WinForm界面布局控件WeifenLuo。WinFormsUI。停靠

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用

()

编写人:CC阿爸

 

2015-1-28

 

伍华聪的博客中,看到布局控件"WeifenLuo.WinFormsUI.Docking",发现的确是一个非常棒的开源控件,用过的人都深有体会,该控件之强大、美观、不亚于商业控件。而且控件使用也是比较简单的今天在这里,我想与大家一起分这一伟大的控件。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。

一、引用方法:

1.建立一个WinForm工程,默认生成了一个WinForm窗体。

2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll

3.窗体属性IsMdiContainer:True

4.工具箱—>右键—>选择项—>.net组件—>浏览—>weiFenLuo.winFormsUI.Docking.dll—>在工具箱出现dockPanel

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)第1张 

5.dockPanel拖到窗体上,设置Dock属性,我设置的是:Fill在这里要注意,在先增加菜单工具条,后增加dockpanel否则,会出现布局介面显示不全的问题。

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)第2张 

以下为具体的设计介面:

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)第3张 

左侧加入一窗体,并设计成outlookbar的样式。它其实也是在一个停靠的窗体中的,继承自WeifenLuo.WinFormsUI.Docking.DockContent

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)第4张

二、加入其它两个控件配合介面的设计:UtilityLibrary+ IrisSkin2

UtilityLibrary.dll为可以产生outlookbar这样的效果

IrisSkin2.dll为引入皮肤控件

三.设计完成后的介面如下:

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)第5张

四.其它部分就是代码部分:

1.frmmain.cs部分:
private string m_strConfigFile;
        private DeserializeDockContent m_deserializeDockContent;
        public frmMain()
        {
            InitializeComponent();
            InitializeLeftBar();
        }
        private void InitializeLeftBar()
        {
            m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);
            frmTemp = this;
            m_strConfigFile = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "DockPanel.config");
            m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);
        }
        private IDockContent GetContentFromPersistString(string persistString)
        {
            if (persistString == typeof(frmLeftBar).ToString())
            {
                return frmLeftBar;
            }
            else
            {
                // 可以加的其它子窗体
                return null;
            }
        }

2.加载主窗口
private void frmMain_Load(object sender, EventArgs e)
        {
            globalcolor = System.Drawing.Color.FromArgb(Convert.ToInt32(W1.LoadXmlFileValue("config.xml""Color""UserColor")));
            globalcolor2 = System.Drawing.Color.FromArgb(Convert.ToInt32(W1.LoadXmlFileValue("config.xml""Color""IMColor")));
            CreditControl = Convert.ToBoolean(C_BaseInfo.GetsysConf().Tables[0].Rows[0]["CreditControl"]);
            //设置时间和日期
            tssl1.Text = "今天日期:" + DateTime.Now.ToString("yyyy-MM-dd");
            tssl2.Text = "登录时间:" + System.DateTime.Now.ToLongTimeString();
            tsslLoginUser.Text = "当前用户:" + " " + frmLogin.C_UserInfo.SysUser;
            MenuStrip ms = (MenuStrip)this.Controls["menuStrip1"];
            ArrayList arr = new ArrayList();
            dsright = C_BaseInfo.UserRight(frmLogin.C_UserInfo);
            GetMenuAllName(arr, null0, ms);//调用递归函数
            if (File.Exists(m_strConfigFile))
            {
                dockPanel1.LoadFromXml(m_strConfigFile, m_deserializeDockContent);
            }
            frmLeftBar.Show(this.dockPanel1, DockState.DockLeft);
            this.dockPanel1.BackgroundImage = global::ECM.Properties.Resources.cable_16_92;




        }
3.显示子窗口
private ECM.Purchase.frmPO frmpo = null;
        private void mnuPO_Click(object sender, EventArgs e)
        {
            if (FindFormName("frmPO") == null)
            {
                frmpo = new ECM.Purchase.frmPO(this);

            
            frmpo.MdiParent = this;
            frmpo.Show(frmMain.frmTemp.dockPanel1);
            frmpo.Focus();
            }
            else
            {
                Form f = FindFormName("frmPO"as Form;
                f.Focus();
            }

        }

 WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)第6张

以下为其它同学编写有关该控件的技术文档,供大家参考

http://www.cnblogs.com/wuhuacong/archive/2009/07/09/1520082.html

http://www.cnblogs.com/luomingui/archive/2013/09/19/3329763.html

欢迎加入技术分享群!!!!

免责声明:文章转载自《WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Docker安装及基本使用方法(转)SqlServer基础之(触发器)(清晰易懂)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinForm界面开发之“分页控件”

在程序中,分页总是永远的话题,因为数据总是很多很多,分页展示在程序性能和数据查看感官方面得到很好的平衡,是一种良好的编程习惯和UI设计。 Winform中的分页控件可能没有Asp.net世界中的分页控件那么丰富多彩,不过也有不少的分页控件可以采用,各个人的可能都有一些不同的东西,一些好的东西。就我而言,我希望控件能够尽可能的多一些功能,耦合性低一些,例如我...

转 将python的datetime转换为unix时间戳

python datetime unix时间戳以及字符串时间戳转换   将python的datetime转换为unix时间戳 import time import datetime dtime = datetime.datetime.now() ans_time = time.mktime(dtime.timetuple())  将unix时间戳转换为...

DevExpress 控件使用之BarManager

DevExpress 开发的控件有很强的实力,不仅功能丰富,应用简便,而且界面华丽,更可方便定制。对于编程人员来说是个不错的选择。它的菜单栏控件更具代表,完全可以替代开发环境提供的基本控件,而让您编写的程序或软件更显专业化。它还提供完善的帮助系统,资料详尽,可以快速入手。有些高级控件更是零代码的,非常易于使用。另外,关于控件的汉化,可以关注慧都控件网。 下...

mysql cast函数

CAST函数语法规则是:Cast(字段名 as 转换的类型 ),其中类型可以为: CHAR[(N)] 字符型 DATE 日期型DATETIME 日期和时间型DECIMAL float型SIGNED intTIME 时间型 实例1: 表table1 date:2015-11-03 15:31:26 select cast(date as signed)...

极致 Web 性能 —— SPA 性能指南

前言 前端框架时代,为开发体验、效率与页面性能带来,非常大的革命。大家纷纷拿起一系列打包工具(webpack/parcel etc.),配合一系列加载器快速搭建起一个 SPA 页面。 SPA 应用带来的好处非常明显: 提升页面切换体验 降低切换时间 易于部署&前后端分离 但是也带来一系列性能问题: 初始加载脚本较大 首屏空白时间较长 页面返回...

C# 消息处理机制及自定义过滤方式

一、消息概述 Windows 下应用程序的执行是通过消息驱动的。消息是整个应用程序的工作引擎,我们需要理解掌握我们使用的编程语言是如何封装消息的原理。 1. 什么是消息(Message) 消息就是通知和命令。在.NET框架类库中的System.Windows.Forms命名空间中微软采用面对对象的方式重新定义了Message。新的消息(Message)结构...