如何从列表框中保存

时间:2014-05-29 19:06:25

标签: c# listbox

我正在尝试将项目从列表框保存到文件中;我尝试过使用像

这样的东西
  • listbox.items
  • listbox.items.addrange
  • listbox.items.count
  • listbox.items.text(它不会给我一个错误,但也不会保存)

这是代码:

private void button2_Click(object sender, EventArgs e)
{
   if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
   {
       File.WriteAllText(saveFileDialog1.FileName, listBox1.Items.Count);
   }
}

4 个答案:

答案 0 :(得分:1)

File.WriteAllText需要两个项目:文件路径和要写入的字符串(作为String):

你给了它:

  1. ListBox.Items(集合)
  2. ListBox.Items.AddRange(一个函数)
  3. ListBox.Items.Count(有效,但与实际项目无关,因为它只是计数)
  4. ListBox.Items.Text(what ????)(这可能不会编译,因为我不知道该属性)
  5. 如果您真的想要使用File.WriteAllText,则需要遍历所有项目,并将它们全部加入。

    类似的东西:

    File.WriteAllText(saveFileDialog1.FileName, String.Join(",", listBox1.Items));
    
    //If the above doesn't do the cast implicitly, and its always better to be explicit!
    File.WriteAllText(saveFileDialog1.FileName, String.Join(",", listBox1.Items.Cast<string>()));
    

    String.Join

    当然还有很多其他方法来生成输出,但缺点是你需要迭代Items集合中的每个元素并将其单独写入文件,或者使用函数像String.Join一样可以一次完成。

答案 1 :(得分:0)

您可以遍历项目并创建包含所有项目的字符串,然后将该字符串写入文件。

string itemString = "";
foreach (Item item in listbox1.Items)
{
    itemString+=item.Text;
}

File.WriteAllText(saveFileDialog1.FileName, itemString);

您可能希望为每个项目,逗号或换行符添加某种分隔符,以便文件看起来不像乱码。

答案 2 :(得分:0)

要保存listBox中的项目:

private void SaveItems()
{
    using(StreamWriter sw = new StreamWriter("file.txt"))
    {
        for (int i = 0; i < listBox1.Items.Count; i++)
        {
            sw.WriteLine(listBox1.Items[i]);
        }
    }
}

将项目加载到listBox:

private void LoadItems()
{
    using(StreamReader sr = new StreamReader("file.txt"))
    {
        while (!sr.EndOfStream)
        {
            listBox1.Items.Add(sr.ReadLine());
        }
    }
}

答案 3 :(得分:0)

如果您想将ListBox中的所有项目存储到文件中,最好使用File.WriteAllLines(String, String[])

File.WriteAllLines(saveFileDialog1.FileName, 
    listBox1.Items.OfType<ListViewItem>().Select(i => i.Text).ToArray());