RichTextBox (WPF) не має рядкового властивості "Text"


113

Я намагаюся встановити / отримати текст мого RichTextBox, але Text не входить до списку його властивостей, коли я хочу отримати test.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
Контролер "Виконати" має 0 параметрів, але викликається 1 аргументом (аргументами), те саме для абзацу
alvinmeimoun

@alvinmeimoun На насправді, Paragraph()була Paragraph(Inline)перевантаження принаймні , з .NET 3.5Run(string)був також дійсним - це навіть в наведеному вище прикладі).
Драгомок

1
чому так складно?
prouser135

Як додати FontFamilyв абзац?
Матей Міранда

64

Виникла плутанина між RichTextBox в System.Windows.Forms та в System.Windows.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
Найкраща відповідь, яку я міг знайти поки що :) Ось мій код, якщо ви хочете вставити Довжину в інший Textbox у графічному інтерфейсі: 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;


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.