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


113

RichTextBoxのテキストを設定または取得しようとしていますが、test.Textを取得したいときに、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
コンストラクタ 'Run'のパラメータは0ですが、パラグラフと同じように1つの引数で呼び出されます
alvinmeimoun

@alvinmeimoun実際にParagraph()は、少なくとも.NET 3.5以降にParagraph(Inline)過負荷がありましたRun(string)これも有効でした-この例でも同じです)。
Dragomok 2017年

1
なぜそんなに複雑なのですか?
prouser135 2017年

FontFamily段落に追加する方法は?
Matheus Miranda、

64

でリッチテキストボックスの間で混乱があったのSystem.Windows.FormsとでSystem.Windows.Controlは

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

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

ありがとう


38

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したいすべてであるならば、あなたはただ方法を使うことができます。

お役に立てば幸いです。


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

13

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;
    }
}

12

TextWPF RichTextBoxコントロールにはプロパティはありません。以下は、すべてのテキストを取り出す1つの方法です。

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();
テキストボックスに

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」は、Textプロパティを持つrichtextboxを提供します。

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

ここにリンクがあります:Extended WPF Toolkit RichTextBox


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.