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

Sir*_*ggs 8 c# listbox save winforms

最近我一直非常喜欢C#,我只是用它测试,但似乎有一部分我没有得到.

基本上我想要它,这样当我点击SAVE按钮时必须将列表框中的所有项目保存到文本文件中.目前在文件中提出的所有内容都是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!");
}
Run Code Online (Sandbox Code Playgroud)

Iva*_*vov 11

从你的代码

SaveFile.WriteLine(listBox1.Items);

你的程序实际上是这样的:

SaveFile.WriteLine(listBox1.Items.ToString());
Run Code Online (Sandbox Code Playgroud)

集合的.ToString()方法Items返回collection(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());
}
Run Code Online (Sandbox Code Playgroud)


BRA*_*mel 7

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!");
}
Run Code Online (Sandbox Code Playgroud)