如何从列表框中保存
本文关键字:保存 列表 | 更新日期: 2023-09-27 18:05:43
我正在尝试将列表框中的项目保存到文件中;我试过用
之类的东西-
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);
}
}
File.WriteAllText
期望有两项:一个文件路径和要写入的字符串(作为String
):
你给了它:
- 列表框。项目(一个集合)
- ListBox.Items。AddRange (a函数)
- ListBox.Items。计数(有效,但与实际项目无关,因为它只是计数)
- ListBox.Items。文本(什么????)(这可能不会编译,因为我不知道那个属性)
你需要遍历所有的项,如果你真的想使用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
之类的函数一次性完成所有操作。
您可以遍历条目并创建一个包含所有条目的字符串,然后将该字符串写入文件。
string itemString = "";
foreach (Item item in listbox1.Items)
{
itemString+=item.Text;
}
File.WriteAllText(saveFileDialog1.FileName, itemString);
您可能希望在每个条目中添加某种分隔符,逗号或换行符或其他东西,以便文件看起来不像胡言乱语
保存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());
}
}
}
如果您想将ListBox
中的每个项存储到一个文件中,那么最好使用File.WriteAllLines(String, String[])
。
File.WriteAllLines(saveFileDialog1.FileName,
listBox1.Items.OfType<ListViewItem>().Select(i => i.Text).ToArray());