0

我一直在寻找如何做到这一点的几个小时,我认为最好的想法是为每个循环提供一个,然后将其传递到 Stream Writer。

我尝试了多种不同的方法,我想也许我还不足以看到我的错误,如果有人能够提供帮助,那就太好了。

目前该文件已创建,我得到的唯一输出是第一行的“System.Windows.Forms.ListBox+ObjectCollection”,这表明我没有正确传递值。

这是代码:

        private void btnSave_Click(object sender, EventArgs e)
    {
        StreamWriter myOutputStream = new StreamWriter("Myfile.csv");
        myOutputStream.WriteLine(lstBox.Items);
        myOutputStream.Close();
        //foreach (object item in lstBox.Items)
        //string listString = lstBox.SelectedItem.ToString();
        //StreamWriter streamBox = File.CreateText(@"testfile.csv");
        //streamBox.Write(listString);
        //streamBox.Close();
        //if (SaveFileDialog.ShowDialog() == DialogResult.OK)
        //{
        //    System.IO.StreamWriter streamBox = new System.IO.StreamWriter(SaveFileDialog);
        //    foreach (object item in lstBox.Items)
        //        streamBox.WriteLine(item.ToString());
        //    streamBox.Close();
        //}
    }

所有注释掉的部分都是我过去尝试过的。但是现在,我认为最简单的方法是前三行。

感谢您的输入。

4

2 回答 2

3

您正在写出listBox.Items,这是一个ListBoxObjectCollection. 您需要一个 foreach 循环来编写每个项目:

StreamWriter myOutputStream = new StreamWriter("Myfile.csv");

foreach (var item in lstBox.Items)
{
    myOutputStream.WriteLine(item.ToString());
}

myOutputStream.Close();

另请注意,您可以using在此处使用块:

using (StreamWriter myOutputStream = new StreamWriter("Myfile.csv"))
{
    foreach (var item in lstBox.Items)
    {
        myOutputStream.WriteLine(item.ToString());
    }
}
于 2012-10-29T17:55:14.223 回答
0

首先,里面有什么ListBox?如果列表框中的项目只是字符串项目,那么您可以执行以下操作:

StreamWriter myOutputStream = new StreamWriter("Myfile.csv");
foreach (string item in lstBox.Items) {
    myOutputStream.WriteLine(item);
}
myOutputStream.Close();
于 2012-10-29T17:58:59.323 回答