2009-06-05 17 views
94

Próbuję ustawić/uzyskać tekst mojego RichTextBox, ale tekst nie znajduje się na liście jego właściwości, gdy chcę uzyskać test.Text ...RichTextBox (WPF) nie ma właściwości String "Text"

używam za kod w języku C# (.NET framework 3.5 SP1)

RichTextBox test = new RichTextBox(); 

nie może mieć test.Text(?)

Czy wiesz, dlaczego to może być możliwe?

Odpowiedz

61

nie było pomylenie RichTextBox w System.Windows.Forms aw System.Windows.Control

używam jeden w Kontroli jako używam WPF. Tam nie ma właściwość Text, a także w celu uzyskania tekstu, należy Użyłem tej linii:

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

dzięki

37

WPF RichTextBox ma Document nieruchomości na ustawienie zawartości 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; 

można po prostu użyć metody AppendText chociaż jeśli to wszystko jesteś po.

Nadzieję, że pomaga.

9

Brak właściwości Text w formancie RichTextBox WPF. Oto jeden sposób, aby cały tekst z:

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

„Rozszerzony WPF Toolkit” stanowi obecnie RichTextBox z właściwości Text.

Możesz uzyskać lub ustawić tekst w różnych formatach (XAML, RTF i tekst jawny).

Oto link: Extended WPF Toolkit RichTextBox

5

Jak o właśnie robi następujący:

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

Najlepsza odpowiedź, jaką mogłem znaleźć do tej pory :) Tutaj mój kod, jeśli chcesz wkleić długość w innym polu tekstowym w GUI: 'rtxb_input.SelectAll();' 'txb_InputLength.Text = rtxb_input.Selection.Text.Length. ToString(); ' –

91

do set RichTextBox tekst:

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

do uzyskać tekst RichTextBox:

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

Contructor 'Run' ma 0 parametr (y), ale jest wywoływany z 1 argumentem (argumentami), to samo dla Paragrafu – alvinmeimoun

+0

@alvinmeimoun W rzeczywistości,' Paragraph() 'miał przeciążenie' Paragraph (Inline) [at najmniej od .NET 3.5] (https://msdn.microsoft.com/en-us/library/ms597388 (v = vs.90) .aspx) (i "Run (string)" również było ważne - jest nawet w przykład). – Dragomok

+0

dlaczego tak skomplikowane? – prouser135

7
RichTextBox rtf = new RichTextBox(); 
System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText)); 

rtf.Selection.Load(stream, DataFormats.Rtf); 

LUB

rtf.Selection.Text = yourText; 
6

pomocą dwóch metod rozszerzenie, to staje się bardzo proste:

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; 
    } 
} 
Powiązane problemy