2013-07-15 15 views
1
public partial class Form1 : Form 
{ 
    SaveFileDialog sfd = new SaveFileDialog(); 
    OpenFileDialog ofd = new OpenFileDialog(); 
    public string contents = string.Empty; 
    public Form1() 
    { 
     InitializeComponent(); 
     this.Text = "Untitled"; 
    } 

    private void newToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text != contents) 
     { 
      DialogResult dr = MessageBox.Show("Do You want to save the changes made to " + this.Text, "Save", MessageBoxButtons.YesNoCancel); 
      if (dr == DialogResult.Yes) 
      { 
       sfd.Title = "Save"; 
       if (SaveFile() == 0) 
        return; 
       else 
       { 
        richTextBox1.Text = ""; 
        this.Text = "Untitled"; 
       } 
       contents = ""; 
      } 
      else if (dr == DialogResult.No) 
      { 
       richTextBox1.Text = ""; 
       this.Text = "Untitled"; 
       contents = ""; 
      } 
      else 
      { 
       richTextBox1.Focus(); 
      } 
     } 
     else 
     { 
      this.Text = "Untitled"; 
      richTextBox1.Text = ""; 
      contents = ""; 
     } 

    } 
    private int SaveFile() 
    { 
     sfd.Filter = "Text Documents|*.txt"; 
     sfd.DefaultExt = "txt"; 
     if (sfd.ShowDialog() == DialogResult.Cancel) 
     { 
      richTextBox1.Focus(); 
      return 0; 
     } 
     else 
     { 
      contents = richTextBox1.Text; 
      if (this.Text == "Untitled") 
       richTextBox1.SaveFile(sfd.FileName,RichTextBoxStreamType.PlainText); 
      else 
      { 
       sfd.FileName = this.Text; 
       richTextBox1.SaveFile(sfd.FileName,RichTextBoxStreamType.PlainText); 
      } 
      this.Text = sfd.FileName; 
      return 1; 
     } 


    } 
    private void OpenFile() 
    { 
     ofd.Filter = "Text Documents|*.txt"; 
     if (ofd.ShowDialog() == DialogResult.Cancel) 
      richTextBox1.Focus(); 
     else 
     { 
      richTextBox1.LoadFile(ofd.FileName, RichTextBoxStreamType.PlainText); 
      this.Text = ofd.FileName; 
      contents = richTextBox1.Text; 
     } 
    } 

    private void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text != contents) 
     { 
      DialogResult dr = MessageBox.Show("Do You want to save the changes made to " + this.Text, "Save", MessageBoxButtons.YesNoCancel); 
      if (dr == DialogResult.Yes) 
      { 
       SaveFile(); 
       OpenFile(); 
      } 
      else if (dr == DialogResult.No) 
      { 
       OpenFile(); 
      } 
      else 
      { 
       richTextBox1.Focus(); 
      } 
     } 
     else 
      OpenFile(); 
    } 

    private void saveToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     SaveFile(); 
    } 

    private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     sfd.Filter = "Text Documents|*.txt"; 
     sfd.DefaultExt = "txt"; 
     if (sfd.ShowDialog() == DialogResult.Cancel) 
     { 
      richTextBox1.Focus(); 
     } 
     else 
     { 
      contents = richTextBox1.Text; 
      richTextBox1.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText); 

      this.Text = sfd.FileName; 
     }    
    } 

當我們打開Windows記事本應用程序,然後打開文件,更改它的內容並保存它,它只需保存而不打開保存文件對話框。但在保存文件對話框上方創建的記事本程序中,在更改保存文件的內容後單擊「保存」打開。儘管保存文件對話框中出現相同的文件名,但在單擊「保存」時會顯示一條消息:「相同的文件名已存在,是否要替換它?」。這就是我想要刪除的內容,並將更改的內容直接保存到打開的文件中,而無需打開保存文件對話框。在C#中的記事本程序中保存文件的正常運行

回答

0

你需要做的是保存輸入的文件名,然後,當按下保存選項時,檢查以前輸入的文件名。如果您有,請跳過顯示對話框並執行保存代碼。

1

設置sfd.OverwritePrompt = false在施工後和ShowDialog之前的任何時間抑制覆蓋警告。

1

您希望有兩種選擇來保存:「另存爲...」按鈕和「保存」按鈕。您可以創建一個string來保存打開文件的路徑。如果用戶在保存文件時指定了新位置,則位置也可能會更改。如果用戶沒有打開該文件,則「另存爲...」按鈕將打開常規的「保存文件」對話框。一旦用戶指定的文檔的位置,你可以將文件路徑保存到字符串,並使用'的StreamWriter」將其保存,而不對話框:

... 
using System.IO; 
... 

public partial class Form1 : Form 
{ 
    SaveFileDialog sfd = new SaveFileDialog(); 
    OpenFileDialog ofd = new OpenFileDialog(); 
    public string contents = string.Empty; 

    //string to hold file location 
    string currentFileLoc; 


    public Form1() 
    { 
     InitializeComponent(); 
     this.Text = "Untitled"; 
    } 

    private void newToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text != contents) 
     { 
      DialogResult dr = MessageBox.Show("Do You want to save the changes made to " + this.Text, "Save", MessageBoxButtons.YesNoCancel); 
      if (dr == DialogResult.Yes) 
      { 
       sfd.Title = "Save"; 
       if (SaveFile() == 0) 
        return; 
       else 
       { 
        richTextBox1.Text = ""; 
        this.Text = "Untitled"; 
       } 
       contents = ""; 
      } 
      else if (dr == DialogResult.No) 
      { 
       richTextBox1.Text = ""; 
       this.Text = "Untitled"; 
       contents = ""; 
      } 
      else 
      { 
       richTextBox1.Focus(); 
      } 
     } 
     else 
     { 
      this.Text = "Untitled"; 
      richTextBox1.Text = ""; 
      contents = ""; 
     } 

    } 
    private int SaveFile() 
    { 
     sfd.Filter = "Text Documents|*.txt"; 
     sfd.DefaultExt = "txt"; 
     if (sfd.ShowDialog() == DialogResult.Cancel) 
     { 
      richTextBox1.Focus(); 
      return 0; 
     } 
     else 
     { 
      contents = richTextBox1.Text; 
      if (this.Text == "Untitled") 
       richTextBox1.SaveFile(sfd.FileName,RichTextBoxStreamType.PlainText); 
      else 
      { 
       sfd.FileName = this.Text; 
       richTextBox1.SaveFile(sfd.FileName,RichTextBoxStreamType.PlainText); 
      } 
      this.Text = sfd.FileName; 
      // 
      currentFileLoc = sfd.FileName; 
      return 1; 
     } 


    } 
    private void OpenFile() 
    { 
     ofd.Filter = "Text Documents|*.txt"; 
     if (ofd.ShowDialog() == DialogResult.Cancel) 
      richTextBox1.Focus(); 
     else 
     { 
      richTextBox1.LoadFile(ofd.FileName, RichTextBoxStreamType.PlainText); 
      this.Text = ofd.FileName; 
      contents = richTextBox1.Text; 
     } 

     currentFileLoc = ofd.FileName; 
     this.Text = currentFileLoc; 
    } 

    private void openToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (richTextBox1.Text != contents) 
     { 
      DialogResult dr = MessageBox.Show("Do You want to save the changes made to " + this.Text, "Save", MessageBoxButtons.YesNoCancel); 
      if (dr == DialogResult.Yes) 
      { 
       SaveFile(); 
       OpenFile(); 
      } 
      else if (dr == DialogResult.No) 
      { 
       OpenFile(); 
      } 
      else 
      { 
       richTextBox1.Focus(); 
      } 
     } 
     else 
      OpenFile(); 
    } 

    private void saveToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     Save(); 
    } 

    private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     SaveFile();    
    } 

    //new method 
    private void Save() 
    { 
     if (currentFileLoc != null) 
     { 
      using (StreamWriter writer = new StreamWriter(currentFileLoc)) 
      { 
       writer.WriteLine(richTextBox1.Text); 
      } 
     } 

     else 
      saveFile(); 
    } 
} 

我建議你也封閉using(...){ }塊在try/catch聲明並處理任何異常。

+0

對不起,但它並沒有解決我的問題..我想要的是,已打開的文件中更改的內容將保存到該文件,而不必打開'保存文件對話框'點擊'保存'按鈕.. – ash

+0

但是,謝謝爲streamwriter的想法..我明白了這一點,並使工作正確.. – ash

相關問題