0

我正在用 c# 做一个记事本。这是文件的保存部分。但问题是,如果我修改文本并再次保存,它会要求保存一个新文件而不是保存在原始文件中。

    private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {

        saveFileDialog1.Title = "Save file";
        saveFileDialog1.FileName = tabControl1.SelectedTab.Text;
        saveFileDialog1.Filter = "TEXT|*.txt|DOC|*.doc|DOCX|*.docx|RICH TEXT FILE|*.rtf|ALL FILES|*.*";
        saveFileDialog1.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        if (saveFileDialog1.ShowDialog() == DialogResult.OK && saveFileDialog1.FileName != "")
        {
            richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
        }

    }
4

3 回答 3

3

在您的类中使用具有上次保存文件的值的私有字段

var currentFileName = "";

    .....

    private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {

        saveFileDialog1.Title = "Save file";
        saveFileDialog1.FileName = tabControl1.SelectedTab.Text;
        saveFileDialog1.Filter = "TEXT|*.txt|DOC|*.doc|DOCX|*.docx|RICH TEXT FILE|*.rtf|ALL FILES|*.*";
        saveFileDialog1.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        bool save = true;
        if (string.IsNullOrEmpty(currentFileName))
        {
            var result = saveFileDialog1.ShowDialog();

            if (result == DialogResult.OK && saveFileDialog1.FileName != "")
            {
                currentFileName = saveFileDialog1.FileName;
            }
            else
            {
                save = false;
            }
        }

        if (save)
            richTextBox1.SaveFile(currentFileName, RichTextBoxStreamType.RichText);
    }
于 2013-09-20T11:22:11.980 回答
1

如果您继续显示保存文件对话框,那么这就是您得到的。(saveFileDialog1.ShowDialog())

最好是:

  • 创建包含路径的内部字符串变量。(默认为“”)(或使用tabControl1.SelectedTab.Text
  • 如果未设置路径,则显示文件对话框,将结果保存在路径中
  • 如果设置了路径,保存文件
于 2013-09-20T11:20:02.720 回答
0

将 SaveFileDialog 的 .OverWritePrompt 设置为 false

http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.overwriteprompt.aspx

于 2013-09-20T11:20:23.420 回答