web-dev-qa-db-ja.com

RichTextBox(WPF)には文字列プロパティ「Text」がありません

RichTextBoxのテキストを設定/取得しようとしていますが、test.Textを取得したいときに、Textがプロパティのリストに含まれていません...

C#(.net framework 3.5 SP1)でコードビハインドを使用しています

RichTextBox test = new RichTextBox();

test.Text(?)を持つことはできません

どうしてそれが可能になるのか知っていますか?

111
paradisonoir

to set RichTextBoxテキスト:

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

to get RichTextBoxテキスト:

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

System.Windows.FormsSystem.Windows.Control のRichTextBoxには混乱がありました

WPFを使用しているので、コントロールのコントロールを使用しています。そこには、Textプロパティはありません。テキストを取得するには、次の行を使用する必要があります。

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

ありがとう

64
paradisonoir

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メソッドだけを使用できます。

お役に立てば幸いです。

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

WPF RichTextBoxコントロールにはTextプロパティはありません。すべてのテキストを出力する1つの方法を次に示します。

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

string allText = range.Text;
11
Chris Amelinckx

2つの拡張メソッドを使用すると、これは非常に簡単になります。

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;
    }
}
11
Smile4ever
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;
8
Vincenzo Costa

次のようにしてください:

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

「拡張WPFツールキット」は、リッチテキストボックスにTextプロパティを提供します。

さまざまな形式(XAML、RTFおよびプレーンテキスト)でテキストを取得または設定できます。

リンクは次のとおりです。 Extended WPF Toolkit RichTextBox

4
GiangLP

私の場合、RTFテキストをプレーンテキストに変換する必要がありました。GiangLPの回答のように(Xceed WPF Toolkitを使用して)したことです。拡張メソッドで私のコードを設定する:

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;

    }
0
Xavave