打开并保存文件对话框

时间:2011-10-10 17:20:26

标签: c#

我使用openFileDialog从文本文件中读取并打印列表框中的值和saveFileDialog以保存textfile.i中的更改。编写此代码但它不起作用。如果使用文本框更改列表框工作很好。但我需要打印并将项目保存到列表框中。有什么建议吗?

    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);
        }

    }

2 个答案:

答案 0 :(得分:3)

您需要将文件的每一行添加为列表框项。然后,为了保存,循环遍历每个列表框项并将其写为新行。

您可以使用File.ReadAllLines和listBox1.Items.AddRange添加项目。

listBox1.Items.AddRange(File.ReadAllLines(openFileDialog1.FileName));

由于Items属性包含对象而不是字符串,因此您需要手动循环遍历这些项并单独编写它们......或许可以执行类似

的操作
StringBuilder sb = new StringBuilder();
foreach(object item in listBox1.Items) {
    sb.AppendLine(item.ToString();
}
File.WriteAllText(saveFileDialog1.FileName, sb.ToString());

答案 1 :(得分:1)

ListBox.Text仅表示列表框项的选定部分。

来自MSDN文档的引用:

  

当此属性的值设置为字符串值时,ListBox将在ListBox中搜索与指定文本匹配的项目并选择该项目。您还可以使用此属性来确定ListBox中当前选择的项目

这应该有效:

using System.Linq;
...

string[] lines = File.ReadAllLines(fileName);
listBox.Items.AddRange(lines.ToArray<object>());