-1

この質問には回答済みです。コードを少し改善しました (少なくともそう思います)。これは、質問Open file in rich text box with C#に対する受け入れられた回答を思い出させます。間違いを犯していない場合 (間違いがある可能性があります)、コードはリッチ テキスト ボックス rtfMain からのテキストを含むファイルを保存する必要があります。デフォルトのファイル拡張子は .txt です。ファイル拡張子 .rtf を使用することもできます。

private void menuFileSave_Click(object sender, EventArgs e) 
{ 
// Create a new SaveFileDialog object 
using (SaveFileDialog dlgSave = new SaveFileDialog())
  try
  {
    // Default file extension
    dlgSave.DefaultExt = "txt"; 
    // SaveFileDialog title
    dlgSave.Title = "Save File As";
    // Available file extensions
    dlgSave.Filter = "Text Files (*.txt)|*.txt|RTF Files (*.rtf)|*.rtf"; 
    // Show SaveFileDialog box and save file
    if (dlgSave.ShowDialog() == DialogResult.OK) 
    { 
      // Save as .txt file
      if (Path.GetExtension(dlgSave.FileName) == ".txt")
      {
        rtfMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.PlainText);
      }
      // Save as .rtf file
      if (Path.GetExtension(dlgSave.FileName) == ".rtf")
      {
        rtfMain.SaveFile(dlgSave.FileName, RichTextBoxStreamType.PlainText);
      }
    }
    catch (Exception errorMsg)
    {
      MessageBox.Show(errorMsg.Message);
    }
  }
}
private void rtfMain_TextChanged(object sender, EventArgs e)
{
}

更新: コードをさらに改善しました (少なくともそう思います)。主な違いは、ファイルのエンコーディングをより細かく制御できるようになったことです。これは私が今使っているコードです:

private void fileSave_Click(object sender, EventArgs e)
{
  // Text from the rich textbox rtfMain
  string str = rtfMain.Text;
  // Create a new SaveFileDialog object
  using (SaveFileDialog dlgSave = new SaveFileDialog())
  try
  {
    // Available file extensions
    dlgSave.Filter = "All Files (*.*)|*.*";
    // SaveFileDialog title
    dlgSave.Title = "Save";
    // Show SaveFileDialog
    if (dlgSave.ShowDialog() == DialogResult.OK && dlgSave.FileName.Length > 0)
    {
      // Save file as utf8 without byte order mark (BOM)
      // ref: http://msdn.microsoft.com/en-us/library/s064f8w2.aspx
      UTF8Encoding utf8 = new UTF8Encoding();
      StreamWriter sw = new StreamWriter(dlgSave.FileName, false, utf8);
      sw.Write(str);
      sw.Close();
    }
  }
  catch (Exception errorMsg)
  {
    MessageBox.Show(errorMsg.Message);
  } 
}
4

2 に答える 2

4

このような:

 rtfMain.SaveFile(dlgSave.FileName);
于 2010-09-20T13:33:15.967 に答える
-3

ここのコードは、フォーマットされた .doc ファイルを保存します。それを使用して .docx ファイルを保存すると保存されますが、Microsoft Word を使用して保存したファイルを開こうとすると、エラー メッセージが表示されます。

于 2013-01-16T11:56:12.540 に答える