2013-03-04 36 views
0

我正在C#winForm中编写应用程序,并且我正在使用ListView来存储一些数据。 当窗体关闭时,我需要保存这个项目列表,并在窗体再次打开时再次加载它。保存并加载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文件,无论是最好/更容易处理。

+0

有点依赖。这是用户数据,所以你可以将它存储为像userconig(可能是xml)文件?你已经有一个数据库,你可能会想将它保存到..等.. – 2013-03-04 00:14:13

+0

是的,这是用户数据,这些都是闹钟设置的排序,我没有使用数据库。 – Terix 2013-03-04 13:14:25

回答

2

你可以写一个简单的辅助类为:

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文件所在的文件夹中。

+0

哪些使用指令应该用于Items类? – Terix 2013-03-04 13:10:33

+0

“使用指令”是什么意思?我把它作为'Items'来作为范例,你将不得不在那里建立你自己的数据结构。 – 2013-03-04 20:52:51