是否有关于保存/加载ListView控件列状态的最佳实践?我想记住列的顺序和大小,以便ListView始终保持为用户自定义它。是否有一些内置的方法来序列化/反序列化ListView列的宽度和顺序?我无法在Google上找到答案。
答案 0 :(得分:1)
没有内置方式。提取数据并以对您的应用程序有意义的方式保留它。
配置设置通常最简单。
Best practice to save application settings in a Windows Forms Application
答案 1 :(得分:0)
ObjectListView - 围绕.NET WinForms ListView的开源包装器 - 具有持久保存ListView状态的方法。请查看SaveState()
和RestoreState()
方法。
总体战略是:
ListView
。ListView
的状态
醇>
要序列化你的状态对象,你需要这样的东西:
using (MemoryStream ms = new MemoryStream()) {
BinaryFormatter serializer = new BinaryFormatter();
serializer.AssemblyFormat = FormatterAssemblyStyle.Simple;
serializer.Serialize(ms, listViewState);
return ms.ToArray();
}
恢复你的状态:
using (MemoryStream ms = new MemoryStream(state)) {
BinaryFormatter deserializer = new BinaryFormatter();
ListViewState listViewState;
try {
listViewState = deserializer.Deserialize(ms) as ListViewState;
} catch (System.Runtime.Serialization.SerializationException) {
return false;
}
// Restore state here
}
唯一棘手的问题是恢复列的顺序。 DisplayIndex
众所周知地挑剔。