RichTextBox (WPF) không có thuộc tính chuỗi “Văn bản”


113

Tôi đang cố gắng thiết lập / lấy văn bản của RichTextBox của mình, nhưng Văn bản không nằm trong danh sách các thuộc tính của nó khi tôi muốn kiểm tra.

Tôi đang sử dụng mã phía sau trong C # (.net framework 3.5 SP1)

RichTextBox test = new RichTextBox();

không thể có test.Text(?)

Bạn có biết làm thế nào nó có thể trở thành có thể?

Câu trả lời:


122

để đặt văn bản RichTextBox:

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

để nhận văn bản RichTextBox:

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

2
Contructor 'Run' có 0 Thông số (s) nhưng được gọi với 1 lập luận (s), tương tự cho Paragraph
alvinmeimoun

@alvinmeimoun Trên thực tế, Paragraph()đã có Paragraph(Inline)quá tải ít nhất kể từ .NET 3.5 (và Run(string)cũng hợp lệ - nó thậm chí trong ví dụ).
Dragomok

1
tại sao quá phức tạp?
prouser135

Làm thế nào để thêm FontFamilyvào trong đoạn văn?
Matheus Miranda

64

Có sự nhầm lẫn giữa RichTextBox trong System.Windows.FormsSystem.Windows.Control

Tôi đang sử dụng cái trong Control vì tôi đang sử dụng WPF. Trong đó, không có thuộc tính Văn bản, và để nhận được văn bản, tôi nên sử dụng dòng này:

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

cảm ơn


38

WPF RichTextBox có thuộc Documenttính để thiết lập nội dung 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;

Bạn chỉ có thể sử dụng AppendTextphương pháp này nếu đó là tất cả những gì bạn muốn.

Hy vọng rằng sẽ giúp.


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

13

Sử dụng hai phương pháp mở rộng, điều này trở nên rất dễ dàng:

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

Không có Textthuộc tính nào trong điều khiển WPF RichTextBox. Đây là một cách để lấy tất cả văn bản ra:

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

string allText = range.Text;

8

Bạn chỉ cần làm như sau:

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

1
Câu trả lời tốt nhất mà tôi có thể tìm thấy cho đến nay :) Ở đây mã của tôi nếu bạn muốn dán Chiều dài trong một Textbox trong một giao diện: 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);

HOẶC LÀ

rtf.Selection.Text = yourText;

4

"Bộ công cụ WPF mở rộng" hiện cung cấp một hộp văn bản đa dạng thức với thuộc tính Văn bản.

Bạn có thể lấy hoặc đặt văn bản ở các định dạng khác nhau (XAML, RTF và plaintext).

Đây là liên kết: Bộ công cụ WPF mở rộng RichTextBox


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.