122

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

我在 C# (.net framework 3.5 SP1) 中使用代码

RichTextBox test = new RichTextBox();

不能有test.Text(?)

你知道怎么可能吗?

4

10 回答 10

132

设置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;
于 2012-09-29T08:32:15.883 回答
66

System.Windows.FormsSystem.Windows.Control中的 RichTextBox 之间存在混淆

我正在使用控件中的那个,因为我正在使用 WPF。在那里,没有 Text 属性,为了获取文本,我应该使用这一行:

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

谢谢

于 2009-06-05T19:19:31.880 回答
39

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如果这就是你所追求的,你可以只使用这种方法。

希望有帮助。

于 2009-09-16T11:25:53.697 回答
16

使用两种扩展方法,这变得非常简单:

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;
    }
}
于 2017-02-01T12:54:22.643 回答
15

WPF RichTextBox 控件中没有Text属性。这是获取所有文本的一种方法:

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

string allText = range.Text;
于 2011-10-20T20:53:49.533 回答
13
string GetString(RichTextBox rtb)
{
    var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    return textRange.Text;
}
于 2012-01-11T18:15:30.727 回答
8

How about just doing the following:

_richTextBox.SelectAll();
string myText = _richTextBox.Selection.Text;
于 2012-08-16T20:33:12.527 回答
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;
于 2013-08-08T09:19:57.010 回答
4

“扩展 WPF 工具包”现在提供了一个带有 Text 属性的富文本框。

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

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

于 2012-03-13T06:53:46.653 回答
-12

据此,它确实有一个 Text 属性

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox_members.aspx

如果您希望将文本拆分为线条,也可以尝试“线条”属性。

于 2009-06-05T19:02:20.760 回答