RichTextBox(WPF)没有字符串属性“ Text”


113

我正在尝试设置/获取RichTextBox的文本,但是当我想获取test.Text时,Text不在其属性列表中。

我在C#(.net Framework 3.5 SP1)中使用背后的代码

RichTextBox test = new RichTextBox();

不能有 test.Text(?)

你知道怎么可能吗?

Answers:


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 2014年

@alvinmeimoun实际上,至少从.NET 3.5开始Paragraph()就有一个Paragraph(Inline)重载(这也是有效的-甚至在示例中也是如此)。Run(string)
Dragomok

1
为什么这么复杂?
prouser135 '17

如何FontFamily在段落中添加?
Matheus Miranda '18


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

使用两种扩展方法,这变得非常容易:

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控件中没有属性。这是删除所有文本的一种方法:

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();
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;

4

现在,“扩展的WPF工具包”提供了具有Text属性的Richtextbox。

您可以获取或设置不同格式的文本(XAML,RTF和纯文本)。

这里是链接:扩展的WPF工具包RichTextBox


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.