2009-06-05 13 views
94

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 ...RichTextBox (WPF) no tiene la propiedad de cadena "Texto"

estoy utilizando código detrás en C# (.NET Framework 3.5 SP1)

RichTextBox test = new RichTextBox(); 

no puede tener test.Text(?)

no sabes ¿cómo es que puede ser posible?

Respuesta

61

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

estoy usando el uno en el control como estoy usando WPF. Allí, no hay ninguna propiedad de texto, y con el fin de conseguir un texto, que debería haber utilizado esta línea:

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

gracias

37

El FPM RichTextBox tiene una Document propiedad para establecer 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; 

sólo puede utilizar el método AppendText aunque si eso es todo lo que está buscando.

Espero que ayude.

9

No hay propiedad Text en el control WPF RichTextBox. Aquí es una forma de obtener todo el texto a cabo:

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

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

"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

5

¿Qué tal haciendo lo siguiente:

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

La mejor respuesta que pude encontrar hasta ahora :) Aquí mi código si desea pegar la longitud en otro cuadro de texto en una GUI: 'rtxb_input.SelectAll();' 'txb_InputLength.Text = rtxb_input.Selection.Text.Length. ToString(); ' –

91

a set texto RichTextBox:

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

a llegar texto RichTextBox:

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

Contructor 'Ejecutar' tiene 0 parámetro (s) pero se invoca con 1 argumento (s), igual para el Párrafo – alvinmeimoun

+0

@alvinmeimoun En realidad,' Párrafo() 'tenía una sobrecarga' Párrafo (En línea) '[en menos desde .NET 3.5] (https://msdn.microsoft.com/en-us/library/ms597388 (v = vs.90) .aspx) (y 'Run (string)' también era válido - está incluso en el ejemplo). – Dragomok

+0

¿por qué tan complicado? – prouser135

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

El uso de 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; 
    } 
} 
Cuestiones relacionadas