分隔式容器是一个 停靠面板,它的子停靠面板被并排排列在水平或垂直方向上。 分隔式容器中的所有子面板都同时可视。 分隔式容器可以包含常规停靠面板、标签式容器和其他分隔式容器。 下面的插图展示了一个水平分隔式容器的示例,它包含了三个子面板 (一个常规面板、标签式容器 和垂直分隔式容器):
分隔式容器的子面板显示了最大化按钮 ()。 单击此按钮将最大化指定的子面板,并且最小化所有其他子面板。
创建和销毁分隔式容器
要创建水平分隔式容器,最终用户应该把某个面板停靠在另一个面板的左边缘或右边缘。 下面的插图展示了如何创建一个水平分隔式容器,它由两个停靠面板组成。 一个面板已经被停靠在另一个面板的左边缘。
如果需要创建垂直分隔式容器,则必须把某个面板停靠在另一个面板的上边缘或下边缘。 下面的插图展示了一个示例。
要在代码中创建一个分隔式容器,则某个停靠面板应该被停靠在另一个面板上。 可以通过 DockPanel.DockTo 的重载 (有一个 panel 参数) 来完成此任务。 请参阅 以程序方式停靠面板 章节来获得更多信息。
注意: 主窗体内的水平分隔式容器只能存在于窗体的上边缘和下边缘。 在左边缘和右边缘只能存在垂直分隔式容器。 在浮动模式中,垂直和水平分隔式容器都可以存在。
当容器面板中只包含两个面板、并且其中一个面板已经从容器中取消停靠时,容器面板被自动销毁。
分隔式容器对象
分隔式容器是停靠面板中的一种,可以并排显示其他面板。 分隔式容器由 DockPanel 类呈现。 可以使用索引器符号访问此容器中的子面板。 子面板的数目由容器的 DockPanel.Count 属性返回。 如果某个特定的面板属于一个容器,则可以使用面板的 DockPanel.ParentPanel 属性来返回此容器。
停靠在主窗体中的分隔式容器根据由 DockPanel.Dock 属性指定的容器停靠样式来排列它的子面板。 如果容器被停靠在窗体的上边缘或下边缘,则子面板被水平排列 (不允许垂直排列)。 如果容器被停靠在窗体的左边缘或右边缘,则子面板被垂直排列。
在浮动模式中,分隔式容器的子面板可以水平和垂直排列。 要控制子面板是否被水平还是被垂直排列在浮动分隔式容器内部,可以使用该容器的 DockPanel.FloatVertical 属性。
如果分隔式容器的子面板被最大化,则成为活动的子面板。 活动子面板由容器的 DockPanel.ActiveChild 属性指定,从零开始 (zero-based) 的索引由 DockPanel.ActiveChildIndex 属性指定。 在代码中这些属性可以用于人工激活特定的子面板。
由最终用户执行的停靠操作,可以导致容器面板 (分隔式容器和标签式容器) 被动态创建和销毁。 当任何停靠面板 (包括分隔式容器和标签式容器) 被创建时, DockManager.RegisterDockPanel 事件发生。 可以接管该事件来定制新建的面板。 例如,可能需要设置所创建容器的标题,当它们被浮动时将显示该标题。 当任何停靠面板被销毁并从停靠管理器中删除时,DockManager.UnregisterDockPanel 事件发生。 例如,可以使用此事件来释放在接管 DockManager.RegisterDockPanel 事件时分配的资源。
通过接管 DockManager.StartDocking 和 DockManager.Docking 事件,可以取消特定的停靠操作。例如,可以阻止最终用户取消停靠某个容器面板,或者阻止某个面板被停靠到容器中,等等。
设置
分隔式容器的客户区不可视,因为它被子面板完全占用。 通过 DockPanel.Text 属性指定的容器面板的标题,仅当容器被浮动时可视,或者当容器的 自动隐藏功能 被激活时可视。 这样该容器的外观与感觉就由它的子面板的外观设置确定。 请参阅 停靠面板 章节来获得关于这些设置的一般说明。
面板的默认外观设置由 BarAndDockingController 的 BarAndDockingController.AppearancesDocking 属性确定。 例如,这些设置允许定制活动面板和非活动面板的标题、面板的客户区等。 要指定个别面板的外观设置,可以使用 DockPanel.Appearance 属性。
停靠操作
当分隔式容器被停靠到主窗体中时,它的标题被隐藏,这样最终用户不能拖动容器和把它停靠到特定的位置。 在这种情况下,子面板只可以逐个被拖动和停靠。 在浮动模式中,容器面板的标题是可视的,因此最终用户可以在整个容器上执行停靠操作。
但是,也可以通过代码使用整个分隔式容器。 可以把它停靠到窗体内特定的位置,停靠到另一个面板中,浮动它或激活它的 自动隐藏功能。 可以在容器面板上执行这些操作,类似于在常规面板上的操作。