组织: .NET开源分析组织
成员: KingLi(93040487)
时间: 2008年8月30日
开源项目: DockPanelSuite
技术要求:能看懂C# 代码
关键字:VS.NET2005 C# 开源 WinFormsUI WeifenLuo.WinFormsUI.Docking .Net Docking Library Weifen Luo
标题:DockPanel Suite2.2介绍
DockPanel Suite这个开源的类库出自一个六人开发小组,其中有个叫luoweifen的成员,按猜是位姓罗的华人.具体姓名就不是本文讨论的范围了,沾到这五百年前的关系已让我很高兴.这里我不是搞种族主义,只是在圈子里见到这种能沾亲带故的东西不多.仅此而已.回到正题,下面列表介绍一下它的情况.
最新版本: 2.2版,于07年11月发布.新版中带的实例模仿了VS2005开发工具的界面风格,选项卡式窗体布局,带停靠功能的工具栏窗体与属性窗体等(如下图).我的AMD 3500+,1G内存的本本上测试要占25m左右的内存,按算说性能还是不错的. 其实它早已在鼎鼎大名SharpDevelop开发工具中使用.性能也错不到哪去了.
授权方式: MIT License
开发环境:C# 2.0 (其中调用了不少API函数)
源码位置: http://sourceforge.net/projects/dockpanelsuite
功能特点(作为一个多文档(MDI)管理控件,很好地实现了下面的功能):
1. 选项卡式的窗体布功能 . 这个选项卡的外观是可以自已再扩展的.
2. 工具栏可实现停靠和自动隐藏.这里其实每个继承它的窗体都可以实现停靠和自动隐藏.
3. 窗体间的调节功能(同Splitercontainer相同的功能),如果在容器中将四个窗口成田字型布局,窗体的大小可以调节.
4. 窗体的持久性功能,即可将当前的程序状态保存为XML文件,下次打开即加载XML还原成上次关闭时的窗体布局.
5. 窗体拖拉时的可视化操作.
使用方法:
1).在开发工具中将控件加入到工具栏.
2).将工程中的主窗口的IsMdiContainer 设为true. (否则要改DockPanel控件的DocumentStyle属性值)
3).将所有的子窗体继承自DockContent窗体,运行打开子窗体就看到效果了.
这里还有两篇写得较详:
http://www.cnblogs.com/haoxiaobo/archive/2007/07/17/111493.html
http://hjqtommy.blogbus.com/logs/27552950.html
另外,在分析的过程中,看到作者将API应用得很好,主要是窗口监视钩子(hook).很多语句段写得十分精妙.另外作者也有从Codeproject等网站上找到某些代码,可见作者也在开源中受益.
接下来我会继续研读作者的代码,希望有兴趣的朋友一起互相学习.本人邮址:LQP168#163.COM