2013-12-15 37 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!"); 
} 
相关问题