停靠面板的布局定义了如何在窗体内排列面板、它们的位置、大小和可视性。 该布局可以被保存到系统注册表、XML 文件或流中。
保存停靠面板的布局
要保存停靠面板的布局,可以使用下列方法:DockManager.SaveLayoutToRegistry、DockManager.SaveLayoutToStream 和 DockManager.SaveLayoutToXml。 已保存的布局可以分别通过 DockManager.RestoreLayoutFromRegistry、DockManager.RestoreLayoutFromStream 和 DockManager.RestoreLayoutFromXml 方法进行恢复。
DockManager.SaveLayoutToRegistry 方法接收的 path 参数指定了要保存设置的注册表键。 可以定义整个或部分注册表键。 例如,如果定义了部分键 "Software\MyCompany\MyTool\",则完整的路径将如下所示: "HKEY_CURRENT_USER\Software\MyCompany\MyTool\"。 如果希望把布局存储到其他根路径下,则应该定义整个路径, 例如: "HKEY_LOCAL_MACHINE\Software\MyCompany\MyTool\"。
示例 1
C# | 复制代码 |
---|---|
string xmlFile = "c:\\XtraBars\\DockStates\\MainState.xml"; dockManager1.SaveLayoutToXml(xmlFile); // ... dockManager1.RestoreLayoutFromXml(xmlFile); |
Visual Basic | 复制代码 |
---|---|
Dim xmlFile As String = "c:\XtraBars\DockStates\MainState.xml" DockManager1.SaveLayoutToXml(xmlFile) ' ... DockManager1.RestoreLayoutFromXml(xmlFile) |
保存停靠面板和 Bars 的布局
当一个 BarManager 位于窗体内时,停靠面板的布局可以与 bars 的布局同时被保存到相同的目标内。 要达到此目的,停靠管理器应该被指派到 BarManager.DockManager 属性。 然后,停靠面板和 bars 的布局就可以被自动保存,或人工进行保存。
要人工保存布局,则调用所需的 BarManager 的方法 (BarManager.SaveToRegistry、BarManager.SaveLayoutToStream 或 BarManager.SaveLayoutToXml)。 然后,可以通过 BarManager 的相应方法来恢复布局。 请参阅 人工保存和恢复 Bars 布局 文档来获得更多信息。
通过 BarManager, 停靠面板和 bars 的布局可以被自动保存到系统注册表中。 当窗体被关闭时该布局被自动保存,当窗体被再次打开时恢复该布局。 要启用自动保存功能,则把 BarManager.AutoSaveInRegistry 属性设置为 true,然后通过 BarManager.RegistryPath 属性来指定注册表路径。 更多信息,请参阅 自动保存和恢复 Bars 布局 文档。
注意: 在设计时刻,把停靠管理器添加到已经拥有 BarManager 的窗体中时,BarManager.DockManager 属性将被自动初始化。 在设计时刻把 BarManager 添加到已经拥有停靠管理器的窗体中时,该属性也被初始化。 如果在代码中创建停靠管理器和(或) BarManager,则必须人工初始化 BarManager.DockManager 属性。
示例 2
C# | 复制代码 |
---|---|
barManager1.DockManager = dockManager1; barManager1.RegistryPath = "XtraBars\\Layouts\\MainLayout"; barManager1.SaveLayoutToRegistry(); // ... barManager1.RestoreLayoutFromRegistry(); |
Visual Basic | 复制代码 |
---|---|
BarManager1.DockManager = DockManager1 BarManager1.RegistryPath = "XtraBars\\Layouts\\MainLayout" BarManager1.SaveLayoutToRegistry() ' ... BarManager1.RestoreLayoutFromRegistry() |