首先在可视化界面中排序好每个列的显示位置索引
在窗口初始化时进行记录在字段中
/// <summary>
/// 当前显示列的位置索引,用于隐藏后显示进行重新排序位置
/// </summary>
Dictionary<DevExpress.XtraGrid.Columns.GridColumn, int> ColumnsVisIndex = new Dictionary<DevExpress.XtraGrid.Columns.GridColumn, int>();
public F_Shipments()
{
InitializeComponent();
for (int i = 0; i < gridView1.Columns.Count; i++)
{
ColumnsVisIndex.Add(gridView1.Columns[i], gridView1.Columns[i].VisibleIndex);
}
}
每次隐藏或者显示后。根据最初记录的顺序来重新进行排列就可以
//进行列排序因为隐藏的列重新显示会打乱排序
foreach (var item in ColumnsVisIndex)
{
if (item.Key.Visible)
item.Key.VisibleIndex = item.Value;
}