保存用C#从丰富的文本框的文本 [英] Save text from rich text box with C#

查看:130
本文介绍了保存用C#从丰富的文本框的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此问题已回答。我已经提高了代码位(至少我是这么认为的)。现在提醒aceepted回答这个问题打开文件格式文本框用C#。如果我没有犯任何错误(这也许是我),代码应该保存在丰富的文本框rtfMain文本文件。默认的文件扩展名为.txt。您还可以使用文件扩展名.RTF。

 私人无效menuFileSave_Click(对象发件人,EventArgs五)
$ { b $ b //使用创建一个新的SaveFileDialog对象
(SaveFileDialog dlgSave =新SaveFileDialog())

{
//默认文件扩展名
dlgSave.DefaultExt =TXT
// SaveFileDialog标题
dlgSave.Title =文件另存为;
//可用的文件扩展名
dlgSave.Filter =文本文件(* .txt)| * .TXT | RTF文件(* .RTF)| * .RTF
//显示SaveFileDialog框和保存文件
如果(dlgSave.ShowDialog()== DialogResult.OK)
{
//如果另存为.txt文件
(Path.GetExtension(dlgSave.FileName)==名.txt)
{
rtfMain.SaveFile(dlgSave.FileName,RichTextBoxStreamType.PlainText);
}
//保存为.rtf文件
如果(Path.GetExtension(dlgSave.FileName)==的.rtf)
{
rtfMain.SaveFile( dlgSave.FileName,RichTextBoxStreamType.PlainText);
}
}
赶上(例外ERRORMSG)
{
MessageBox.Show(errorMsg.Message);
}
}
}
私人无效rtfMain_TextChanged(对象发件人,EventArgs五)
{
}






更新:我已经进一步提高了代码(至少我是这么认为的)。主要的区别是,你现在有超过文件编码更多的控制。这是我现在使用的代码:

 私人无效fileSave_Click(对象发件人,EventArgs五)
{
//从富文本rtfMain
字符串str = rtfMain.Text文本;
//使用创建一个新的SaveFileDialog对象
(SaveFileDialog dlgSave =新SaveFileDialog())

{
//可用的文件扩展名
dlgSave。过滤器=所有文件| *。*(*。*)。
// SaveFileDialog标题
dlgSave.Title =保存;
//显示SaveFileDialog
如果(dlgSave.ShowDialog()== DialogResult.OK和放大器;&安培; dlgSave.FileName.Length大于0)
{
//保存文件如无UTF8字节顺序标记(BOM)
//参考:http://msdn.microsoft.com/en-us/library/s064f8w2.aspx
UTF8Encoding UTF8 =新UTF8Encoding();
的StreamWriter SW =新的StreamWriter(dlgSave.FileName,假的,UTF8);
sw.Write(STR);
sw.Close();
}
}
赶上(例外ERRORMSG)
{
MessageBox.Show(errorMsg.Message);
}
}


解决方案

像这样的:

  rtfMain.SaveFile(dlgSave.FileName); 


This question has been answered. I've improved the code a bit (at least I think so). It now reminds of the aceepted answer to the question Open file in rich text box with C#. If I haven't made any mistakes (which I may have), the code should save a file with text from the rich text box rtfMain. The default file extension is .txt. You can also use the file extension .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)
{
}


Update: I have improved the code even further (at least I think so). The main difference is that you now have more control over the file encoding. This is the code I'm using right now:

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);
  } 
}

解决方案

Like this:

 rtfMain.SaveFile(dlgSave.FileName);

这篇关于保存用C#从丰富的文本框的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆