繁体   English   中英

C# 将 ListBox 中的所有项目保存到文本文件

[英]C# Save all items in a ListBox to text file

最近我一直很喜欢 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!");
}

从你的代码

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

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!");
}

该问题有一种解决方案。

System.IO.File.WriteAllLines(path, Listbox.Items.Cast<string>().ToArray());

将您的文件路径+名称和列表框名称放在上面的代码中。

示例:在下面的示例中,文件的路径和名称为D:\\sku3.txt ,列表框名称为lb System.IO.File.WriteAllLines(@"D:\\sku3.txt", lb.Items.Cast<string>().ToArray());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM