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
생성자 '실행'0 매개 변수 (들)을 가지고 있지만 단락에 대한 동일, 1 개 인자 (들)를 호출
alvinmeimoun

@alvinmeimoun 사실, 최소한 .NET 3.5 이후Paragraph()Paragraph(Inline)과부하 가 발생 했습니다 ( Run(string)또한 유효했습니다-예제에서도 마찬가지입니다).
Dragomok

1
왜 그렇게 복잡합니까?
prouser135

FontFamily단락 에 추가하는 방법 ?
Matheus Miranda

64

System.Windows.Forms의 RichTextBox 와 System.Windows.Control은

WPF를 사용하고 있으므로 Control에서 하나를 사용하고 있습니다. 거기에는 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

두 가지 확장 방법을 사용하면 매우 쉽습니다.

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

"Extended WPF Toolkit"은 이제 Text 속성이있는 풍부한 텍스트 상자를 제공합니다.

다른 형식 (XAML, RTF 및 일반 텍스트)으로 텍스트를 가져 오거나 설정할 수 있습니다.

링크는 다음과 같습니다. Extended WPF Toolkit RichTextBox


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.