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?

Nasreddine
sumber

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;
sma6871.dll
sumber
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

Mark Hall
sumber
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.

EightyOne Unite
sumber
13
string GetString(RichTextBox rtb)
{
    var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    return textRange.Text;
}
pengguna1143839
sumber
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;
    }
}
Smile4ever
sumber
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;
Chris Amelinckx
sumber
8

Bagaimana kalau hanya melakukan hal berikut:

_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
Curtis
sumber
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;
Vincenzo Costa
sumber
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

GiangLP
sumber