Почему RichTextBox теряет формат после добавления новой строки?

#c#

#c#

Вопрос:

У меня проблема с цветом строки rich text box:

У меня есть richtexbox, в котором пользователь вводит сообщение. Я отмечаю каждое слово, которое существует в моем словаре. Для этого я использую этот код:

   this.inputTextAreaRtb.Text=this.inputTextAreaRtb.Text.Remove(startCoordinate, endCoordinate - startCoordinate);

  this.inputTextAreaRtb.SelectionStart = this.inputTextAreaRtb.Text.Length;
 this.inputTextAreaRtb.SelectionLength = 0;
  this.inputTextAreaRtb.SelectionFont = new System.Drawing.Font(
  "David",
12, FontStyle.Underline);   
   this.inputTextAreaRtb.SelectionColor = Color.DarkBlue;                                             
   this.inputTextAreaRtb.AppendText(_word);
  this.inputTextAreaRtb.SelectionColor = this.inputTextAreaRtb.ForeColor;
  this.inputTextAreaRtb.SelectionFont = new System.Drawing.Font(
   "David",
 12, FontStyle.Regular);      
  

Но каждый раз, когда я уже пометил слово, происходит неправильное форматирование слов, которые уже отформатированы.

Есть идеи по поводу этой проблемы?

Ответ №1:

Когда вы устанавливаете inputTextAreaRtb.Text в первой строке, вы устанавливаете новый текст, который не имеет никакого форматирования.

Комментарии:

1. Да, вы правы! Но каково альтернативное решение в этом случае? Есть идеи? Я уже пробовал решение rtf ниже, но оно очень сложное, я думаю, что в этом случае есть более простое решение.

Ответ №2:

SLaks верен. Чтобы получить / задать форматированный текст, вам необходимо получить доступ к Rtf свойству: http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.rtf.aspx.

Также проверьте SelectedRtf свойство: http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.selectedrtf.aspx.

Ответ №3:

 this.inputTextAreaRtb.Text=this.inputTextAreaRtb.Text.Remove(startCoordinate, endCoordinate - startCoordinate);
                ***this.inputTextAreaRtb.Rtf = this.lastRTF;***
                this.inputTextAreaRtb.SelectionStart = this.inputTextAreaRtb.Text.Length;
                this.inputTextAreaRtb.SelectionLength = 0;
                this.inputTextAreaRtb.SelectionFont = new System.Drawing.Font(
                "David",
                12, FontStyle.Underline);   
                this.inputTextAreaRtb.SelectionColor = Color.DarkBlue;                                             
                this.inputTextAreaRtb.AppendText(_word);
                this.inputTextAreaRtb.SelectionColor = this.inputTextAreaRtb.ForeColor;
                this.inputTextAreaRtb.SelectionFont = new System.Drawing.Font(
                "David",
                12, FontStyle.Regular);
  

Мне нужно было только сохранять последний RTF-файл RichTextBox перед каждой итерацией
Спасибо, ребята!