移动列时 UltraGrid VisiblePosition 不会更改

UltraGrid VisiblePosition not change when column moved

我有一个 c# 项目,在这个项目中我有一个与 ultragrid 的对话。网格有 3 组,每组有 4 列以上。 Columns of the Ultragrid

我可以移动列并更改​​列的顺序。一切正常。最后我想保存列的定义,如果列是隐藏的和列的位置。

我遍历列列表并保存 column.Hidden 属性 和 column.Header.VisiblePosition 属性。问题是 visiblePosition 值与您在 UI.

中看到的网格中的位置不匹配

我左右移动了一些列,但是visiblePosition还是和开始的一样。 UI 显示每列的正确顺序并且列位置已更改但 属性 的值没有更改。

也许问题存在是因为我使用了 columnGroups。

谢谢

UltraWinGrid 有两种方法可以解决这类问题。
它们是 SaveAsXmlLoadFromXml 来自 DisplayLayout class.

您可以使用它们来保存和恢复您的网格布局。
例如,在表单的 Dispose 事件中,您可以添加对

的调用
public void SaveLayout(UltraGrid grd, string layoutFile)
{
    if (grd.DataSource != null)
        grd.DisplayLayout.SaveAsXml(layoutFile, PropertyCategories.All);
}

在网格的 InitializeLayout 事件中,您可以使用

恢复布局
public void LoadLayout(UltraGrid grd, string layoutFile)
{
    if (File.Exists(layoutFile))
        grd.DisplayLayout.LoadFromXml(layoutFile, PropertyCategories.All);
}

根据您的具体需要,您可以微调 PropertyCategories 枚举以仅选择您想要 save/restore.

的 属性 组