本文档提供关于保存和恢复 DevExpress .NET 控件 (XtraGrid、XtraPivotGrid、XtraTreeList、XtraVerticalGrid、XtraBars、XtraScheduler、XtraLayoutControl) 布局的总说明。
保存和恢复布局基础
特定的 DevExpress .NET 控件和组件允许把它们的布局信息保存到数据存储中 (XML 文件、流和系统注册表),然后恢复它。 这些信息可能包含了可视化元素的可视性、位置和大小,它们的外观设置、筛选、排序、分组和总计信息等。 当布局被保存时,某些特殊的控件不支持特定的设置 (例如,外观设置) 被保存。 其他控件引入了选项来控制这些需要随同布局一起保存和恢复的设置。
允许保存布局的控件通常都提供了下列方法:SaveLayoutToRegistry、SaveLayoutToStream 和 SaveLayoutToXml。 注意不能保存多个布局到单个数据存储中。 每个布局都必须存储在单独的数据存储中。
要恢复布局,可以使用一个对应的方法:RestoreLayoutFromRegistry、RestoreLayoutFromStream 或 RestoreLayoutFromXml。
例如在 XtraGrid 控件中,可以使用 BaseView.SaveLayoutToXml 和 BaseView.RestoreLayoutFromXml 方法来把 GridControl 视图的布局保存到一个 XML 文件中,然后恢复它。
当把布局保存到注册表时,你可以定义一个绝对或相对的注册表键作为参数。 例如,指定 "Software\MyCompany\MyProject\" 作为部分键将导致设置被保存到 "HKEY_CURRENT_USER\Software\MyCompany\MyProject\" 路径中。 如果需要把布局存储到其他根键中,你也可以指定完整的键。
在 XtraGrid 和 XtraPivotGrid 控件中,当布局被保存/恢复时,可以指定哪些选项需要被保存/恢复。 缺省时,当某个控件的布局被保存到数据存储时,一组特定的属性会被保存。 这包含了列/字段的可视化状态、位置和大小、排序、分组和总计信息、确定不同可视化元素的可视性的所有设置等。 但是,外观和某些其他设置不会被保存。 要定制哪些选项需要被保存/恢复,你可以使用特定的 SaveLayoutTo... 和 RestoreLayoutFrom... 方法的重载,或者使用由控件提供的 OptionsLayout 属性。 请参阅 布局选项 (XtraGrid、XtraPivotGrid) 主题获得更多信息。
要阻止布局从某个数据存储中恢复并且应用到控件上,你可以接管控件的 BeforeLoadLayout 事件。
何时调用 SaveLayoutTo... 和 RestoreLayoutFrom... 方法
典型地, RestoreLayoutFrom... 方法必须在窗体/用户控件正被加载时调用。 你可以接管 Form.Load/UserControl.Load 事件来执行此任务。
SaveLayoutTo... 方法应该在窗体/用户控件被关闭或销毁时调用。 当 DevExpress 控件被放置在窗体内时,使用 Form.FormClosing 事件来保存控件的布局。 当 DevExpress 控件被放置在用户控件内时, 通过重写 UserControl.Dispose 方法来保存控件的布局。