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

时间:2009-06-05 18:43:44

标签: c# wpf wpf-controls richtextbox

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

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

RichTextBox test = new RichTextBox();

不能有test.Text(?)

你知道怎么可能吗?

11 个答案:

答案 0 :(得分:113)

设置 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;

答案 1 :(得分:64)

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

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

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

感谢

答案 2 :(得分:38)

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方法,但这就是你所追求的全部。

希望有所帮助。

答案 3 :(得分:12)

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

答案 4 :(得分:11)

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

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

string allText = range.Text;

答案 5 :(得分:8)

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;

答案 6 :(得分:8)

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

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

答案 7 :(得分:6)

如何做到以下几点:

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

答案 8 :(得分:4)

“扩展WPF工具包”现在提供带有Text属性的richtextbox。

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

以下是链接:Extended WPF Toolkit RichTextBox

答案 9 :(得分:0)

就我而言,我必须将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;

    }

答案 10 :(得分:-9)

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

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

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