RichTextBox (WPF) не имеет строкового свойства «Текст» - PullRequest
108 голосов
/ 05 июня 2009

Я пытаюсь установить / получить текст моего RichTextBox, но Text не входит в список его свойств, когда я хочу получить test.Text ...

Я использую код в C # (.net Framework 3.5 SP1)

RichTextBox test = new RichTextBox();

не может иметь test.Text(?)

Знаете ли вы, как это возможно?

Ответы [ 11 ]

113 голосов
/ 29 сентября 2012

до установить Текст 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;
64 голосов
/ 05 июня 2009

Произошла путаница между RichTextBox в System.Windows.Forms и в System.Windows.Control

Я использую тот в Control, как я использую WPF. Там нет свойства Text, и чтобы получить текст, я должен был использовать эту строку:

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

спасибо

38 голосов
/ 16 сентября 2009

WPF RichTextBox имеет свойство Document для установки содержимого в стиле 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, если это все, что вам нужно.

Надеюсь, это поможет.

12 голосов
/ 11 января 2012
string GetString(RichTextBox rtb)
{
    var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    return textRange.Text;
}
11 голосов
/ 21 октября 2011

В элементе управления WPF RichTextBox отсутствует свойство Text. Вот один из способов получить весь текст:

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

string allText = range.Text;
9 голосов
/ 01 февраля 2017

Используя два метода расширения, это становится очень просто:

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;
    }
}
8 голосов
/ 08 августа 2013
RichTextBox rtf = new RichTextBox();
System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText));

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

OR

rtf.Selection.Text = yourText;
7 голосов
/ 17 августа 2012

Как насчет просто сделать следующее:

_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
4 голосов
/ 13 марта 2012

«Extended WPF Toolkit» теперь предоставляет richtextbox со свойством Text.

Вы можете получить или установить текст в разных форматах (XAML, RTF и обычный текст).

Вот ссылка: Расширенный набор инструментов WPF RichTextBox

0 голосов
/ 06 мая 2018

В моем случае мне пришлось преобразовать текст RTF в простой текст: что я сделал (используя Xceed WPF Toolkit) как в ответе GiangLP; и установка моего кода в метод расширения:

public static string RTFToPlainText(this string s)
    {
       // for information : default Xceed.Wpf.Toolkit.RichTextBox formatter is RtfFormatter 
        Xceed.Wpf.Toolkit.RichTextBox rtBox = new Xceed.Wpf.Toolkit.RichTextBox(new System.Windows.Documents.FlowDocument());
        rtBox.Text = s;
        rtBox.TextFormatter = new Xceed.Wpf.Toolkit.PlainTextFormatter();
        return rtBox.Text;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...