2009-03-02 2 views
8

Come si ottiene il testo in formato RTF di RichTextBox? Sto cercando di ottenere questo, ma la proprietà non esiste.Come ottenere RTF da RichTextBox

RichTextBox rtb = new RichTextBox(); 
string s = rtb.Rtf; 

risposta

14

Per ottenere il codice XAML reale creata dall'utente all'interno del 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: non ho il codice di fronte a me per testare, ma un'istanza del tipo TextRange ha un (per ascoltare) metodo Save che accetta un parametro DataFormats, che può essere DataFormats.Rtf

+1

DataFormats contiene un membro Rtf. Forse questo metodo funzionerà. –

+0

E ora, come posso impostare il testo RTF di un RichTextBox? – rpf

+1

fai un'altra domanda! ;) –

4

Esistono 2 classi RichTextBox, uno dal quadro WinForms e uno dal quadro WPF:

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

Solo il Winforms RichTextBox ha una proprietà Rtf, l'altro ha una proprietà del documento che contiene un FlowDocument.

+0

Sì, lo so ... Dalla proprietà Documento, come ottengo il testo RTF? – rpf

+0

Si dovrebbe guardare la conversione di un FlowDocument in una stringa RTF poiché il contenuto del controllo WPF è un FlowDocument e non un RTF. Non ho idea di come realizzare questo però. – Wouter