C#将列表框中的所有项目保存到文本文件

C#将列表框中的所有项目保存到文本文件,c#,winforms,listbox,save,C#,Winforms,Listbox,Save,最近我非常喜欢C#,我只是在测试它,但似乎有一部分我不明白 基本上我想要它,所以当我点击SAVE按钮时,必须将列表框中的所有项目保存到一个文本文件中。目前,该文件中的所有内容都是System.Windows.Forms.ListBox+ObjectCollection 这是我到目前为止得到的。使用SaveFile.WriteLine(listBox1.Items)部分我尝试了许多不同的方法,但我似乎无法理解。还要记住,在我的程序的最终产品中,我希望它读回该文本文件,并将文本文件中的内容输出到列表

最近我非常喜欢C#,我只是在测试它,但似乎有一部分我不明白

基本上我想要它,所以当我点击SAVE按钮时,必须将列表框中的所有项目保存到一个文本文件中。目前,该文件中的所有内容都是
System.Windows.Forms.ListBox+ObjectCollection

这是我到目前为止得到的。使用
SaveFile.WriteLine(listBox1.Items)部分我尝试了许多不同的方法,但我似乎无法理解。还要记住,在我的程序的最终产品中,我希望它读回该文本文件,并将文本文件中的内容输出到列表框中,如果这不可能,那么我的坏,毕竟我是C的新手。)


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!");
}
从你的代码

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());
}

这个问题只有一种解决办法

System.IO.File.WriteAllLines(path, Listbox.Items.Cast<string>().ToArray());
System.IO.File.writeAllines(路径,Listbox.Items.Cast().ToArray());
在上面的代码中输入文件路径+名称和列表框名称

例如: 在下面的示例中,文件的路径和名称是
D:\sku3.txt
,列表框名称是
lb

System.IO.File.writeAllines(@“D:\sku3.txt”,lb.Items.Cast().ToArray())

干净,我喜欢。
System.IO.File.WriteAllLines(path, Listbox.Items.Cast<string>().ToArray());