将文本直接添加到控件text中会破坏RichTextBox中的内容

本文关键字:RichTextBox text 文本 添加 控件 | 更新日期: 2023-09-27 18:25:15

我正在制作一个小型文本编辑器,作为大型应用程序的一部分。所以我取了一个RichTextBox,并添加了一个带有一些按钮的工具条。实际上,编辑部分一切都很好。我的应用程序要求每次单击按钮时在文本框中添加DateTime戳。当我这样做时,整个标记都消失了。

所以我做的是:

 private void button_click(object sender, EventArgs e)
 {
    richtextbox1.text += DateTime.Now.toString();
 }

将文本直接添加到控件text中会破坏RichTextBox中的内容

手册:

若要读取或设置多行文本框的文本,请使用"行"特性Text属性不返回有关应用于RichTextBox内容的格式的任何信息若要获取RTF代码,请使用RTF属性。

本文可能会对您有所帮助。

本文展示了如何扩展RichTextBox以允许将字符串附加到其RTF属性解决方案如下:

public void InsertTextAsRtf(string _text, Font _font, 
    RtfColor _textColor, RtfColor _backColor) {
    StringBuilder _rtf = new StringBuilder();
    // Append the RTF header
    _rtf.Append(RTF_HEADER);
    // Create the font table from the font passed in and append it to the
    // RTF string
    _rtf.Append(GetFontTable(_font));
    // Create the color table from the colors passed in and append it to the
    // RTF string
    _rtf.Append(GetColorTable(_textColor, _backColor));
    // Create the document area from the text to be added as RTF and append
    // it to the RTF string.
    _rtf.Append(GetDocumentArea(_text, _font));
    this.SelectedRtf = _rtf.ToString();
  }

public void AppendTextAsRtf(string _text, Font _font, 
  RtfColor _textColor, RtfColor _backColor) {
  // Move carret to the end of the text
  this.Select(this.TextLength, 0);
  InsertTextAsRtf(_text, _font, _textColor, _backColor);
}