RichTextBox (WPF) non ha proprietà stringa “Testo”

Sto cercando di impostare / ottenere il testo del mio RichTextBox, ma Text non è tra le sue proprietà quando voglio test.Text …

Sto usando il codice dietro in C # (.net framework 3.5 SP1)

RichTextBox test = new RichTextBox(); 

non può avere test.Text(?)

Sai come mai è ansible?

per impostare il testo di RichTextBox:

 richTextBox1.Document.Blocks.Clear(); richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text"))); 

ottenere il testo di RichTextBox:

 string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text; 

C’è stata una confusione tra RichTextBox in System.Windows.Forms e in System.Windows.Control

Sto usando quello in Control mentre sto usando WPF. In questo caso, non esiste una proprietà Text e, per ottenere un testo, avrei dovuto usare questa linea:

 string myText = new TextRange(transcriberArea.Document.ContentStart, transcriberArea.Document.ContentEnd).Text; 

Grazie

RichTextBox WPF ha una proprietà Document per l’impostazione del contenuto a MSDN:

 // Create a FlowDocument to contain content for the RichTextBox. FlowDocument myFlowDoc = new FlowDocument(); // Add paragraphs to the FlowDocument. myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 1"))); myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 2"))); myFlowDoc.Blocks.Add(new Paragraph(new Run("Paragraph 3"))); RichTextBox myRichTextBox = new RichTextBox(); // Add initial content to the RichTextBox. myRichTextBox.Document = myFlowDoc; 

Puoi semplicemente usare il metodo AppendText anche se è tutto ciò che stai AppendText .

Spero possa aiutare.

 string GetString(RichTextBox rtb) { var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); return textRange.Text; } 

Non esiste alcuna proprietà Text nel controllo RichTextBox di WPF. Ecco un modo per ottenere tutto il testo:

 TextRange range = new TextRange(myRTB.Document.ContentStart, myRTB.Document.ContentEnd); string allText = range.Text; 
 RichTextBox rtf = new RichTextBox(); System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText)); rtf.Selection.Load(stream, DataFormats.Rtf); 

O

 rtf.Selection.Text = yourText; 

Utilizzando due metodi di estensione, questo diventa molto semplice:

 public static class Ext { public static void SetText(this RichTextBox richTextBox, string text) { richTextBox.Document.Blocks.Clear(); richTextBox.Document.Blocks.Add(new Paragraph(new Run(text))); } public static string GetText(this RichTextBox richTextBox) { return new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd).Text; } } 

Che ne dici di fare solo quanto segue:

 _richTextBox.SelectAll(); string myText = _richTextBox.Selection.Text; 

“Extended WPF Toolkit” ora fornisce un richtextbox con la proprietà Text.

È ansible ottenere o impostare il testo in diversi formati (XAML, RTF e testo in chiaro).

Ecco il link: Extended Toolkit WPF RichTextBox

Nel mio caso, ho dovuto trasformare un testo RTF in testo normale: cosa ho fatto (usando Xceed WPF Toolkit) come nella risposta GiangLP; e impostazione del mio codice in un metodo di estensione:

 public static string RTFToPlainText(this string s) { // for information : default Xceed.Wpf.Toolkit.RichTextBox formatter is RtfFormatter Xceed.Wpf.Toolkit.RichTextBox rtBox = new Xceed.Wpf.Toolkit.RichTextBox(new System.Windows.Documents.FlowDocument()); rtBox.Text = s; rtBox.TextFormatter = new Xceed.Wpf.Toolkit.PlainTextFormatter(); return rtBox.Text; } 

In base a ciò, ha una proprietà Text

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_members.aspx

Puoi anche provare la proprietà “Linee” se vuoi che il testo sia spezzato come linee.