2012-02-01 51 views
0

我有一個richtextbox將覆蓋之前已保存的文件。清除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; 
    } 
+1

用戶正在做什麼操作來確定什麼是新文件? – LarsTech 2012-02-01 17:16:56

回答

0

第一保存(SetLocation)既不是null或空,這就是爲什麼當你再次保存(點擊SaveMyFile按鈕)它不會進入到SetFileLocation方法,只是執行SAVEFILE

後fileLocation變量
+0

所以我可以設置一個可怕的將它保存爲一個新文件,如果richtextbox爲空。對不起,我在這 – tristin 2012-02-01 17:23:30

+0

作爲@BERNARD說,在你的「新文件按鈕」單擊事件設置變量fileLocation爲空 – jjchiw 2012-02-02 08:25:12

0

當您「開始一個新文件」時,只需將fileLocation設置爲空,並且您應該再次顯示SaveFileDialog以允許您輸入新的文件位置。下面的代碼是關鍵位:

if (String.IsNullOrEmpty(fileLocation)) 
{ 
    performSave = SetFileLocation(); 
} 

SetFileLocation()方法將不會被調用,除非fileLocation爲空或空字符串。

+0

爲空,所以我需要添加到我的代碼,所以它將允許我「另存爲」如果richtextbox爲空 – tristin 2012-02-02 09:09:01

+0

正如我所提到的,無論您的代碼指示「啓動一個新文件」,將'fileLocation'設置爲'null'。 – Bernard 2012-02-02 13:07:25