2015-08-06 3 views
1

Я хотел бы отформатировать RTF-текст в RichTextBox без потери стиля RTF.Отступ RTF Текст в RichTextBox без потери стиля RTF

Dim Alinea As String = " " 

Private Sub Indent_Click(sender As Object, e As EventArgs) Handles Indent.Click 
    Try 
     Dim Output As String = Nothing 
     Dim Split() As String = RichTextBox1.Lines 
     For i = 0 To Split.Length - 1 
      Output = String.Concat(Output, Split(i).Insert(0, Alinea), If(Not i = Split.Length - 1, vbNewLine, Nothing)) 
     Next 
     RichTextBox1.Text = Output 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

Предыдущий код работает, но он возвращает текст без какого-либо стиля.

Я бы просто хотел добавить Alinea на все начало строки текста RichTextBox. Я попытался использовать свойство RichTextBox1.Rtf, но он показывает MsgBox, говорящий «Формат файла недействителен».

ответ

1

Вместо использования RichTextBox1.Lines используйте RichTextBox1.Rtf.

RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(vbCrLf, vbCrLf & vbTab) 

Это работает, но вы можете ввести на что-то вроде \par или \par & vbcrlf придерживаться больше стандарта РТФ.

RichTextBox1.Rtf = RichTextBox1.Rtf.Replace("\par" & vbCrLf, "\par" & vbCrLf & vbTab) 

«Он остается в качестве упражнения для читателя», чтобы заставить его работать на первой линии и для любого символу следующего «\ пар». (Я всегда ненавидел эту фразу.)

+0

Проблема с использованием Replace vbCrLf заключается в том, что она не работает для первой строки ... Есть ли другой способ с циклом, как и раньше? – Drarig29

+0

Вы можете сделать это с помощью цикла, однако нет свойства, которое предоставляет отдельные строки богатого текста. Вам нужно будет сделать это до цикла с помощью функции разделения строк или чего-то подобного. – xpda

Смежные вопросы