usar como c# wpf wpf-controls richtextbox

c# - como - RichTextBox(WPF) no tiene la propiedad de cadena "Texto"



como usar richtextbox c# (11)

Estoy tratando de establecer / obtener el texto de mi RichTextBox, pero el texto no está entre la lista de sus propiedades cuando quiero obtener la prueba. Texto ...

Estoy usando código detrás en C # (.net framework 3.5 SP1)

RichTextBox test = new RichTextBox();

no puede tener test.Text(?)

¿Sabes cómo puede ser posible?


"Extended WPF Toolkit" ahora proporciona un richtextbox con la propiedad Text.

Puede obtener o configurar el texto en diferentes formatos (XAML, RTF y texto plano).

Aquí está el enlace: Extended WPF Toolkit RichTextBox


¿Qué tal si haces lo siguiente?

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



En mi caso, tuve que convertir un texto RTF en texto sin formato: lo que hice (usando Xceed WPF Toolkit) como en la respuesta de GiangLP; y configurando mi código en un método de extensión:

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; }


Hubo una confusión entre RichTextBox en System.Windows.Forms y en System.Windows.Control

Estoy usando el que está en el Control ya que estoy usando WPF. Allí, no hay propiedad de Texto, y para obtener un texto, debería haber usado esta línea:

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

Gracias


No hay propiedad Text en el control WPF RichTextBox. Aquí hay una forma de sacar todo el texto:

TextRange range = new TextRange(myRTB.Document.ContentStart, myRTB.Document.ContentEnd); string allText = range.Text;


Usando dos métodos de extensión, esto se vuelve muy fácil:

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; } }


WPF RichTextBox tiene una propiedad de Document para configurar el contenido a la 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;

AppendText embargo, puedes usar el método AppendText si eso es lo único que buscas.

Espero que ayude.


para configurar el texto de RichTextBox:

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

para obtener el texto de RichTextBox:

string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).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;


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