RichTextBox (WPF) nie ma właściwości ciągu „Text”

114

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

Używam kodu w C # (.NET Framework 3.5 SP1)

RichTextBox test = new RichTextBox();

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

Czy wiesz, jak to możliwe?

Nasreddine
źródło

Odpowiedzi:

122

aby ustawić tekst RichTextBox:

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

aby uzyskać tekst RichTextBox:

string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;
sma6871
źródło
2
Contructor
``
@alvinmeimoun Właściwie Paragraph()miał Paragraph(Inline)przeciążenie co najmniej od .NET 3.5 (i Run(string)też był poprawny - to nawet w przykładzie).
Dragomok
1
dlaczego tak skomplikowane?
prouser135
Jak dodać FontFamilyakapit?
Matheus Miranda
64

Wystąpił błąd między RichTextBox w System.Windows.Forms i System.Windows.Control

Używam tego w formancie, ponieważ używam WPF. Tam nie ma właściwości Text, a aby uzyskać tekst, powinienem był użyć tej linii:

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

dzięki

Mark Hall
źródło
38

WPF RichTextBox ma Documentwłaściwość do ustawiania 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żesz po prostu użyć tej AppendTextmetody, jeśli to wszystko, czego szukasz.

Mam nadzieję, że to pomoże.

EightyOne Unite
źródło
13
string GetString(RichTextBox rtb)
{
    var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    return textRange.Text;
}
user1143839
źródło
13

Dzięki dwóm metodom rozszerzenia staje się to 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;
    }
}
Smile4ever
źródło
12

W Textkontrolce WPF RichTextBox nie ma właściwości. Oto jeden sposób na wyciągnięcie całego tekstu:

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

string allText = range.Text;
Chris Amelinckx
źródło
8

Co powiesz na wykonanie następujących czynności:

_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
Curtis
źródło
1
Najlepsza odpowiedź, jaką udało mi się do tej pory znaleźć :) Tutaj mój kod, jeśli chcesz wkleić długość w innym polu rtxb_input.SelectAll(); txb_InputLength.Text = rtxb_input.Selection.Text.Length.ToString();
tekstowym
8
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;
Vincenzo Costa
źródło
4

„Rozszerzony zestaw narzędzi WPF” udostępnia teraz richtextbox z właściwością Text.

Możesz pobrać lub ustawić tekst w różnych formatach (XAML, RTF i zwykły tekst).

Oto link: Extended WPF Toolkit RichTextBox

GiangLP
źródło