我正在尝试将项目从列表框保存到文件中;我尝试过使用像
这样的东西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);
}
}
答案 0 :(得分:1)
File.WriteAllText
需要两个项目:文件路径和要写入的字符串(作为String
):
你给了它:
如果您真的想要使用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>()));
当然还有很多其他方法来生成输出,但缺点是你需要迭代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());