我有一个richtextbox,它将覆盖之前已保存过的文件。
如果我需要启动一个新文件然后将其另存为新文件,它只会覆盖保存的第一个文件。
如何做到这一点?
String fileLocation;
private void SaveMyFile_Click(object sender, EventArgs e)
{
var performSave = true;
if (String.IsNullOrEmpty(fileLocation))
{
performSave = SetFileLocation();
}
if (performSave)
richTextBox1.SaveFile(fileLocation, RichTextBoxStreamType.PlainText);
}
private bool SetFileLocation()
{
SaveFileDialog saveFile1 = new SaveFileDialog();
saveFile1.DefaultExt = "*.txt";
saveFile1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*|RTF Files|*.rtf";
if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK &&
saveFile1.FileName.Length > 0)
{
fileLocation = saveFile1.FileName;
return true;
}
return false;
}
答案 0 :(得分:0)
第一次保存(SetLocation)后的fileLocation变量既不为null也不为空,这就是为什么当你再次保存时(单击SaveMyFile按钮)它不会进入SetFileLocation方法而只执行SaveFile
答案 1 :(得分:0)
当您“开始新文件”时,只需将fileLocation
设置为空,然后您应该再次显示SaveFileDialog
以允许您输入新的文件位置。下面的代码是至关重要的一点:
if (String.IsNullOrEmpty(fileLocation))
{
performSave = SetFileLocation();
}
除非SetFileLocation()
为空或空字符串,否则不会调用fileLocation
方法。