Pergunta

Como faço para obter o texto em RTF de um RichTextBox? Eu estou tentando obter como esta, mas a propriedade não existe.

RichTextBox rtb = new RichTextBox();
string s = rtb.Rtf;
Foi útil?

Solução

Para obter o XAML real criado pelo interior do usuário do RichTextBox:

   TextRange tr = new TextRange(myRichTextBox.Document.ContentStart,
                                myRichTextBox.Document.ContentEnd);
   MemoryStream ms = new MemoryStream();
   tr.Save(ms, DataFormats.Xaml);
   string xamlText = ASCIIEncoding.Default.GetString(ms.ToArray());

EDIT: eu não tenho código na frente de mim para teste, mas uma instância do tipo TextRange tem uma Save (de fluxo) método que leva um parâmetro DataFormats, que pode ser DataFormats.Rtf

Outras dicas

Existem 2 classes RichTextBox, uma do quadro winforms e um do quadro WPF:

System.Windows.Controls.RichTextBox wpfBox;
System.Windows.Forms.RichTextBox winformsBox;

Apenas o WinForms RichTextBox tem uma propriedade RTF, o outro tem uma propriedade de documento que contém um FlowDocument.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top