DockPanel

来源:互联网 发布:域名为什么要认证 编辑:程序博客网 时间:2024/06/06 01:15

 DockPanel是指WeifenLuo.WinFormsUI.Docking控件,它是一个开源的控件,能够实现.Net风格的标签页面,就像VS开发环境一样的多文档界面,可以随意拖动、浮动、停靠等。

     使用该控制时,首先需要将动态链接库WeifenLuo.WinFormsUI.Docking.dll添加到VS开发环境中,最好是放在VS安装目录中存放dll文件的目录,然后在工具栏容器下选择项,浏览到刚才添加的dll文件,添加上就可以了,这时工具栏的容器里会多出一个DockPanel控件,然后点开发环境中的全部保存,以后就可以在做项目时直接使用该控件了。

    在具体使用时,需要指定一个主窗体,比如:MainForm,然后就是一堆的子窗体,如Form1和Form2。需要注意的是:

1、主窗体的IsMdiContainer属性必须设置为true,也就是说这个窗体是多文档的,将DockPanel控件放在主窗体,并设置Dock属性为Fill。

2、子窗体Form1和Form2的继承基类也需要修改,一般窗体的继承基类是Form,需要修改为DockContent,也就是说这些窗体必须是从DockContent派生出来的,然后就可以进行窗体自身的设计和开发了。

3、使用DockPanel时,只需要在主窗体中调用就可以,分三步:实例化、设置DockPanel相关属性、显示窗体,例如:

    Private Form1 form1 = new Form1();    // 实例化

    form1.DockPanel = dockPanel1;  // 指定使用的DockPanel

    form1.DockAreas = DockAreas.DockLeft | DockAreas.DockRight | DockAreas.Float;  // 指定停靠区域

    form1.Show(dockPanel1, DockState.DockLeft);  // 在dockPanel1中显示窗体form1,并指定停靠在窗体左侧

4、当主窗体需要使用工具栏和状态栏时,需要特别注意控件的放置顺序,确保DockPanel控件是最后一个放上去的控件,否则可能出现局部显示效果有误的情况。因为当DockPanel控件的Dock属性设置为Fill时,会按照这个控件放置时,窗体可用的空间进行填充,也就是说,如果先放置了DockPanel,后放置工具栏或者状态栏,则工具栏或者状态栏会浮在DockPanel的顶部或底部,对DockPanel的顶部或底部造成遮挡,在开发环境中,可以通过DockPanel的边框显示看出来。如果先放置的工具栏或状态栏,最后放置DockPanel,并设置Dock属性为Fill,则DockPanel控件填充的是工具栏以下,状态栏以上的窗体空间,此时工具栏和状态栏将不会对DockPanel造成影响。因此,必须强调DockPanel控件应该是最后一个放到主窗体的控件。对于其他的第三方控件存在遮挡情况,也可以参照本情况进行处理,也就是说控制的放置顺序会影响最终的显示效果。