2013-12-15 38 views
5

最近我一直很享受C#,我只是在測試它,但似乎有一部分我不明白。C#將列表框中的所有項目保存爲文本文件

基本上我想要它,所以當我單擊保存按鈕時,必須將列表框中的所有項目保存到文本文件中。目前它在文件中的所有內容是System.Windows.Forms.ListBox+ObjectCollection

這是我到目前爲止。隨着SaveFile.WriteLine(listBox1.Items);部分,我嘗試了許多不同的方法,我似乎無法弄清楚。另外請記住,在我的程序的最終產品中,我希望它能夠讀回該文本文件,並將文本文件中的內容輸出到列表框中,如果這不可行,那麼我的不好,我是新手C#畢竟)

private void btn_Save_Click(object sender, EventArgs e) 
{ 
    const string sPath = "save.txt"; 

    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
    SaveFile.WriteLine(listBox1.Items); 
    SaveFile.ToString(); 
    SaveFile.Close(); 

    MessageBox.Show("Programs saved!"); 
} 

回答

9

保存在您的代碼

SaveFile.WriteLine(listBox1.Items );

你的程序實際上做到這一點:

SaveFile.WriteLine(listBox1.Items.ToString()); 

Items收集的.ToString()方法返回集合(System.Windows.Forms.ListBox+ObjectCollection),因爲這是,如果方法不覆蓋默認.ToString()行爲的類型名稱。

爲了以有意義的方式保存數據,您需要循環處理每個項目並按需要編寫它。下面是一個示例代碼,我假設您的物品具有相應的.ToString()實施:

System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
foreach(var item in listBox1.Items) 
{ 
    SaveFile.WriteLine(item.ToString()); 
} 
6

Items是一個集合,你應該通過所有項目重複,以他們

private void btn_Save_Click(object sender, EventArgs e) 
{ 
    const string sPath = "save.txt"; 

    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath); 
    foreach (var item in listBox1.Items) 
    { 
     SaveFile.WriteLine(item); 
    } 

    SaveFile.Close(); 

    MessageBox.Show("Programs saved!"); 
} 
相關問題