C# 打开并保存文件对话框

C# 打开并保存文件对话框,c#,C#,我使用openFileDialog读取文本文件并打印列表框中的值,使用saveFileDialog保存文本文件中的更改。我编写了此代码,但不起作用。如果使用文本框更改列表框,效果很好。但我需要打印项目并将其保存到列表框中。有什么建议吗 private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { } private void button4_Click(object sender

我使用openFileDialog读取文本文件并打印列表框中的值,使用saveFileDialog保存文本文件中的更改。我编写了此代码,但不起作用。如果使用文本框更改列表框,效果很好。但我需要打印项目并将其保存到列表框中。有什么建议吗

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

    }

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

您可以使用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());

文本仅表示列表框项目的选定部分

来自MSDN文档的报价:

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

这应该起作用:

using System.Linq;
...

string[] lines = File.ReadAllLines(fileName);
listBox.Items.AddRange(lines.ToArray<object>());
使用System.Linq;
...
string[]lines=File.ReadAllLines(文件名);
listBox.Items.AddRange(lines.ToArray());

ListBox没有文本属性的有意义的实现。改为使用其Items属性。问题是这些项包含字符串,而不是objectsListBox。项是一个ObjectCollection,因此即使这些项是字符串,它们也会作为对象返回,然后必须转换为字符串(或者,您可以使用ToString,它在字符串上返回自身)。你真的试过这个代码吗?