2013-03-04 84 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