【问题标题】:Save and Load ListView content保存和加载 ListView 内容
【发布时间】:2013-03-04 00:07:48
【问题描述】:

我正在用 C# winForm 编写一个应用程序,并且我正在使用 ListView 来存储一些数据。 我需要在表单关闭时保存此项目列表,并在再次打开表单时再次加载它。

这是在列表中添加新元素的代码:

string[] timeitem = new string[2];

timeitem[0] = txtDescription.Text;
timeitem[1] = msktime.Text;

ListViewItem lvi = new ListViewItem(timeitem);

lstTimes.Items.Add(lvi);

保存和加载此列表的最佳方式是什么?我不需要用户的对话框,每次用户打开包含 ListView 项的表单时,都应该自动保存和加载此列表。我愿意使用 .txt 或 xml 文件,无论是最好的/更容易处理的。

【问题讨论】:

  • 有点依赖。这是用户数据,所以你会像 userconig(可能是 xml)文件一样存储它?您是否已经有一个数据库,您可能希望将其保存到..etc..
  • 是的,这是用户数据,这些是闹钟设置,我没有使用数据库。

标签: c# winforms listview save restore


【解决方案1】:

你可以为此编写一个简单的帮助类:

class ListItemsHelper
{
    private const string FILE_NAME = "items.dat";

    public static void SaveData(Items items)
    {
        string data = SerializeItems(items);
        File.WriteAllText(GetFilePath(), data);
    }

    public static Items LoadData()
    {
        string data = File.ReadAllText(GetFilePath());
        return DeserializeItems(data);
    }

    private static string GetFilePath()
    {
        return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, FILE_NAME);
    }

    private static string SerializeItems(Items items)
    {
        //Do serialization here
    }

    private static Items DeserializeItems(string data)
    {
        //Do deserialization here
    }
}

用途:

ItemsStateHelper.SaveData(items);

Items data = ItemsStateHelper.LoadData();

此外,您还必须包含一些异常处理并选择要保存文件的位置。在我发布的代码中,它保存在 exe 文件所在的文件夹中。

【讨论】:

  • 我应该为 Items 类使用哪个 using 指令?
  • “使用指令”是什么意思?我把它写成Items只是为了举例,你必须在那里建立自己的数据结构。
猜你喜欢
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多