RichTextBox (WPF) ไม่มีคุณสมบัติสตริง“ Text”


114

ฉันพยายามตั้งค่า / รับข้อความของ RichTextBox ของฉัน แต่ Text ไม่ได้อยู่ในรายการคุณสมบัติเมื่อฉันต้องการรับการทดสอบข้อความ ...

ฉันใช้รหัสที่อยู่เบื้องหลังใน C # (.net framework 3.5 SP1)

RichTextBox test = new RichTextBox();

ไม่สามารถมีได้ test.Text(?)

คุณรู้ไหมว่ามันเป็นไปได้อย่างไร?

คำตอบ:


122

เพื่อตั้งค่าข้อความ RichTextBox:

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

เพื่อรับข้อความ RichTextBox:

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

2
Contructor 'Run' มีพารามิเตอร์ 0 แต่ถูกเรียกใช้ด้วย 1 อาร์กิวเมนต์เหมือนกันสำหรับย่อหน้า
alvinmeimoun

@alvinmeimoun อันที่จริงParagraph()มีParagraph(Inline)โอเวอร์โหลดอย่างน้อยตั้งแต่. NET 3.5 (และRun(string)ก็ใช้ได้เช่นกัน - แม้จะอยู่ในตัวอย่างก็ตาม)
Dragomok

1
ทำไมซับซ้อนจัง
prouser135

จะเพิ่มFontFamilyในย่อหน้าได้อย่างไร?
Matheus Miranda

64

มีความสับสนระหว่าง RichTextBox ในSystem.Windows.FormsและในSystem.Windows.Control

ฉันใช้อันใน Control ขณะที่ฉันใช้ WPF ในนั้นไม่มีคุณสมบัติ Text และเพื่อให้ได้ข้อความฉันควรใช้บรรทัดนี้:

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

ขอบคุณ


38

WPF RichTextBox มีDocumentคุณสมบัติสำหรับการตั้งค่าเนื้อหา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;

คุณสามารถใช้AppendTextวิธีนี้ได้แม้ว่าคุณจะต้องการทั้งหมดก็ตาม

หวังว่าจะช่วยได้



13

ใช้สองวิธีการขยายสิ่งนี้กลายเป็นเรื่องง่ายมาก:

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

ไม่มีTextคุณสมบัติในการควบคุม WPF RichTextBox วิธีหนึ่งในการดึงข้อความทั้งหมดออกมามีดังนี้

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

string allText = range.Text;

8

ลองทำสิ่งต่อไปนี้:

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

1
คำตอบที่ดีที่สุดที่ฉันสามารถหาได้ :) นี่คือรหัสของฉันหากคุณต้องการวางความยาวในกล่องข้อความอื่นใน GUI: rtxb_input.SelectAll(); txb_InputLength.Text = rtxb_input.Selection.Text.Length.ToString();
Marty_in_a_Box

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

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

หรือ

rtf.Selection.Text = yourText;

4

ตอนนี้ "Extended WPF Toolkit" มี richtextbox พร้อมคุณสมบัติ Text

คุณสามารถรับหรือตั้งค่าข้อความในรูปแบบต่างๆ (XAML, RTF และข้อความธรรมดา)

นี่คือลิงค์: Extended WPF Toolkit RichTextBox


-10

ตามนี้จะมีคุณสมบัติข้อความ

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_members.aspx

คุณยังสามารถลองใช้คุณสมบัติ "เส้น" หากคุณต้องการให้ข้อความแตกออกเป็นบรรทัด


12
นี่คือ WPF ไม่ใช่ Win Forms
kamranicus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.