C# 将 ListviewItem 保存到二进制文件并读取缺少标签属性

对于我的任务,我需要将我的列表视图项目(详细信息视图)保存到文件,然后从文件读取到列表视图。很少有子项目有标签。

对于文件的读写,我使用以下链接中的 deadlydog 答案(第二个答案):

How to save/restore serializable object to/from file?

但问题是,我发现它只保存了 Items 文本属性,而不是标签属性。

所以,我的问题是如何更新它以便它也能保存标签属性?

这是我重现错误的简化代码:

//Write
List<ListViewItem> lactions;
ListViewItem oItem;

lactions = new List<ListViewItem>();
//add few items
for (int i = 0; i < 5; i++)
{
    oItem = new ListViewItem();
    oItem.Text = "Text " + i;
    oItem.Tag = "Tag " + i;
    lactions.Add(oItem);
}            
WriteObjectToBinaryFile<List<ListViewItem>>(sAPPPath + "\\ListItems.cfg",lactions);

//read
List<ListViewItem> lactions;
ListViewItem oItem;
lactions = ReadObjectFromBinaryFile<List<ListViewItem>>(sAPPPath + "\\ListItems.cfg");
for (int i = 0; i < lactions.Count; i++)
{
    oItem = lactions[i];
    MessageBox.Show(oItem.Text);
    MessageBox.Show(oItem.Tag.ToString()); //this line fire an exception/error
}

public static void WriteToBinaryFile<T>(string filePath,T objectToWrite,bool append = false)
{
    using (Stream stream = File.Open(filePath,append ? FileMode.Append : FileMode.Create))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        binaryFormatter.Serialize(stream,objectToWrite);
    }
}

public static T ReadFromBinaryFile<T>(string filePath)
{
    using (Stream stream = File.Open(filePath,FileMode.Open))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        return (T)binaryFormatter.Deserialize(stream);
    }
}

任何帮助将不胜感激..

注意:当然我知道还有其他方法,比如循环所有项目都保存为人类可读/文本格式并读取文本文件并使用代码创建项目。但我想知道简化的(单行/几行)代码是否可以达到目的,那为什么还要写一百行代码?

最好的问候

ko2ko2 回答:C# 将 ListviewItem 保存到二进制文件并读取缺少标签属性

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/12963.html

大家都在问