RichTextBox (WPF) tidak memiliki properti string "Teks"


113

Saya mencoba untuk mengatur / mendapatkan teks dari RichTextBox saya, tetapi Teks tidak termasuk di antara daftar propertinya ketika saya ingin mendapatkan tes. Teks ...

Saya menggunakan kode di belakang di C # (.net framework 3.5 SP1)

RichTextBox test = new RichTextBox();

tidak bisa memiliki test.Text(?)

Apakah Anda tahu kenapa itu bisa terjadi?

Jawaban:


122

untuk menyetel teks RichTextBox:

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

untuk mendapatkan teks RichTextBox:

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

2
Contructor 'Run' memiliki 0 parameter tetapi dipanggil dengan 1 argumen, sama untuk Paragraph
alvinmeimoun

@alvinmeimoun Sebenarnya, Paragraph()mengalami Paragraph(Inline)kelebihan beban setidaknya sejak .NET 3.5 (dan Run(string)juga valid - bahkan dalam contoh).
Dragomok

1
kenapa begitu rumit?
prouser135

Bagaimana menambahkan FontFamilyparagraf?
Matheus Miranda

64

Ada kebingungan antara RichTextBox di System.Windows.Forms dan di System.Windows.Control

Saya menggunakan yang ada di Kontrol karena saya menggunakan WPF. Di sana, tidak ada properti Teks, dan untuk mendapatkan teks, saya harus menggunakan baris ini:

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

Terima kasih


38

WPF RichTextBox memiliki Documentproperti untuk mengatur konten ala 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;

Anda hanya dapat menggunakan AppendTextmetode ini jika hanya itu yang Anda cari.

Semoga membantu.


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

13

Dengan menggunakan dua metode ekstensi, ini menjadi sangat mudah:

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

12

Tidak ada Textproperti di kontrol WPF RichTextBox. Berikut salah satu cara untuk mengeluarkan semua teks:

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

string allText = range.Text;

8

Bagaimana kalau hanya melakukan hal berikut:

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

1
Jawaban terbaik yang dapat saya temukan sejauh ini :) Berikut kode saya jika Anda ingin menempelkan Panjang di rtxb_input.SelectAll(); txb_InputLength.Text = rtxb_input.Selection.Text.Length.ToString();
Kotak Teks

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

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

ATAU

rtf.Selection.Text = yourText;

4

"Extended WPF Toolkit" sekarang menyediakan kotak teks kaya dengan properti Teks.

Anda bisa mendapatkan atau menyetel teks dalam berbagai format (XAML, RTF, dan teks biasa).

Ini tautannya: Extended WPF Toolkit RichTextBox


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.