打开并保存文件对话框
我使用openFileDialog从文本文件中读取并在列表框和saveFileDialog中打印值以保存textfile中的更改。我编写了此代码,但它不起作用。如果更改了与文本框的列表框工作正常。但我需要打印并将项目保存到listbox.any建议?打开并保存文件对话框
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
label7.Text = openFileDialog1.FileName;
listBox1.Text = File.ReadAllText(label7.Text);
}
}
private void button5_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
File.WriteAllText(saveFileDialog1.FileName, listBox1.Text);
}
}
您需要将文件的每一行添加为列表框项目。然后,保存,遍历每个列表框项目并将其写入一个新行。
您可以使用File.ReadAllLines和listBox1.Items.AddRange添加项目。
listBox1.Items.AddRange(File.ReadAllLines(openFileDialog1.FileName));
由于项目属性包含的对象,而不是字符串,您将需要手动遍历所有的项目,单独写出来......也许做这样的事情
StringBuilder sb = new StringBuilder();
foreach(object item in listBox1.Items) {
sb.AppendLine(item.ToString();
}
File.WriteAllText(saveFileDialog1.FileName, sb.ToString());
问题是项目包含字符串,而不是对象 –
ListBox.Items是一个ObjectCollection,因此即使项目是字符串,它们也会作为对象返回,然后必须将其转换为字符串(或者,您可以使用ToString,它在一个字符串上返回自己)。你真的试过这段代码吗? –
我试了一下,效果很好,谢谢! –
ListBox.Text仅代表选择部分列表框项目。
从MSDN文档引述:
当该属性的值被设置为一个字符串值,对于匹配指定的文本和选择项目列表框内的项目列表框的搜索。您还可以使用此属性来确定哪些项目在列表框中
当前选择的这应该工作:
using System.Linq;
...
string[] lines = File.ReadAllLines(fileName);
listBox.Items.AddRange(lines.ToArray<object>());
ListBox中没有一个有意义的执行Text属性。改用它的Items属性。 –
如果我使用组合框? –