停靠管理器可以对它所拥有的 停靠面板 的行为和外观设置进行集中控制。 要为特定窗体提供停靠功能,则需要把一个停靠管理器组件放置到此窗体上,然后使用停靠管理器的功能来创建停靠面板。
注意 |
---|
如果 DockManager 寄宿在非托管窗口内,则不支持 自动隐藏功能。 |
停靠管理器对象
停靠管理器由 DockManager 组件呈现。 在应用程序中每个需要停靠功能的窗体都必须放置自己的停靠管理器组件。 DockManager.Form 属性指向停靠面板可以被停靠的窗体 (用户控件)。 在设计时刻,该属性自动被初始化,在运行时刻则应该显式初始化它 (例如通过停靠管理器的构造函数)。
注意 |
---|
由于可能导致冲突,因此不要把多个停靠管理器放置在一个窗体/用户控件中。 而是使用单个停靠管理器,或使用多个被显示在各自主控 UserControl 对象内的停靠管理器。 |
如果需要把面板停靠到其他窗体上,则此窗体必须有自己的停靠管理器。 通过代码,可以把此面板从它的管理器中移动到其他管理器中。 请参阅 以程序方式停靠面板 主题来获得更多信息。
停靠管理器提供了创建停靠面板的功能。 在设计时刻,可以通过单击停靠管理器的上下文菜单中的 Add Panel(添加面板) 菜单项来新建一个面板:也可以通过停靠管理器的 自定义 对话框来创建停靠面板,此对话框通过选择停靠管理器的 Customize(自定义) 菜单项进行调用:
创建和销毁停靠面板 主题演示了如何在代码中创建和销毁停靠面板。
停靠面板的行为和外观设置
停靠管理器提供了行为和外观设置,这些设置会影响它拥有的所有面板。 它的主要属性在下表中列示:
停靠管理器的属性 | 说明 |
---|---|
DockManager.Images | 面板可以显示的图像的集合,这些图像被显示在 标签式容器 和 自动隐藏容器 的标签页内部。 |
DockingOptions.CloseActiveTabOnly | 应用于标签式容器中的停靠面板。 指明在单击关闭按钮时,标签式容器本身或其活动面板是否被隐藏。 |
DockingOptions.HideImmediatelyOnAutoHide | 指明在自动隐藏功能已激活的面板被隐藏时,是否使用滑动动画效果。 |
BaseDockOptions.ShowAutoHideButton | 允许使用面板的自动隐藏按钮 ()。 |
BaseDockOptions.ShowCloseButton | 允许使用面板的关闭按钮 ()。 |
BaseDockOptions.ShowMaximizeButton | 允许使用面板的最大化按钮 ()。 |
所有停靠面板的公共外观设置,都由 BarAndDockingController 指定。 在默认情况下,这些设置由 DefaultBarAndDockingController 控制,例如可以通过 DefaultBarAndDockingController 组件访问它。
可以把一个新建的 BarAndDockingController 显式指派到 DockManager.Controller 属性。 在这种情况下,将由该控制器 (而不是默认的控制器) 提供外观设置。
BarAndDockingController 的 BarAndDockingController.AppearancesDocking 对象提供了一组属性来定制停靠面板的不同元素 (标题、标签页、客户区等)。 可以为活动面板和非活动面板提供不同的样式。
每个停靠面板也都提供了外观和视图设置,这些设置会影响它的外观与感觉和停靠功能。 如果通过 DockPanel.Appearance 属性指定了面板的外观设置,则由 BarAndDockingController 提供的默认外观设置将被覆盖。 要获得更多信息,请参阅 外观继承选项 文档。
事件
两个有用的事件是 DockManager.RegisterDockPanel 和 DockManager.UnregisterDockPanel 事件,分别发生于停靠面板被创建并且添加到停靠管理器时,以及从停靠管理器中删除停靠面板时。 例如,如果需要,可以使用 DockManager.RegisterDockPanel 事件捕获某个停靠操作所导致的容器面板 (标签式容器 或 分隔式容器) 被创建的时机,然后定制被创建的容器。
要动态控制某个特定的停靠操作是否可以被执行,则可以接管 DockManager.StartDocking 事件。
当改变活动停靠面板时,DockManager.ActivePanelChanged 事件发生。 活动停靠面板是获得焦点或所包含的某个控件获得焦点的停靠面板。 使用 DockManager.ActivePanel 属性来获取当前的活动停靠面板。