列表框项目到数据文件c#

时间:2014-07-14 14:49:41

标签: c# listbox

我要创建一个包含所有列表框项目的.dat文件。

这是编写代码:

using (FileStream fs = new FileStream(@"Test.dat", FileMode.CreateNew))
{
    using (BinaryWriter w = new BinaryWriter(fs))
    {
         listBox1.Items.Add("Hello");
         listBox1.Items.Add("World");

         string[] words = new string[listBox1.Items.Count];
         listBox1.Items.CopyTo(words, 0);

         foreach(string word in words)
         {
             w.Write(word);
         }

         w.Close();

         fs.Close();
    }
}

这是阅读代码:

using (FileStream fs = new FileStream(@"Test.dat", FileMode.Open, FileAccess.Read))
{
    using (BinaryReader r = new BinaryReader(fs))
    {

        textBox1.Text = r.ReadString();

        r.Close();

        fs.Close();  
    }
}

但我只从列表框中获得第一项 Hello 。 有没有办法从列表框中获取所有项目并使它们成为字符串数据文件?

3 个答案:

答案 0 :(得分:2)

你让它变得更加复杂:

保存项目:

File.WriteAllLines(@"Test.data", listBox1.Items.Cast<string>().ToArray());

然后阅读它们,反过来:

listBox1.Items.AddRange(File.ReadAllLines(@"Test.data"));

答案 1 :(得分:0)

当您使用foreach时,为什么不使用

for (int i = 0; i < listBox1.Items.Count; i++)
{
    w.Write(listBox1[i].ToString());
} 

答案 2 :(得分:0)

要从BinaryReader中读取 if 这是您需要的,您需要一个这样的循环:

while (r.PeekChar() >= 0) textBox1.Text += r.ReadString() + "\r\n";

或者你只得到第一个字符串。

在没有推进文件指针的情况下,查看是否在阅读器中有更多内容,请参阅MSDN

当然要从列表框的项目中创建一个文本文件&#39;文本LarsTech的答案是......