programing

RichTextBox(WPF)에 "Text" 문자열 속성이 없습니다.

javamemo 2023. 6. 4. 10:15
반응형

RichTextBox(WPF)에 "Text" 문자열 속성이 없습니다.

RichTextBox의 텍스트를 설정하거나 가져오려고 하지만 테스트를 받을 때 텍스트가 속성 목록에 없습니다.텍스트...

C#(.net Framework 3.5 SP1)에서 코드 뒤에 있는 코드를 사용하고 있습니다.

RichTextBox test = new RichTextBox();

가질 수 없는test.Text(?)

어떻게 그게 가능한지 아십니까?

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;

시스템에서 RichTextBox 간에 혼동이 발생했습니다.윈도우.양식 및 시스템있습니다.윈도우.컨트롤

컨트롤에 있는 것을 WPF를 사용하는 것처럼 사용하고 있습니다.여기에는 Text 속성이 없으며 텍스트를 얻으려면 다음 줄을 사용해야 합니다.

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

감사해요.

WPF 리치 텍스트 상자에는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하지만 그것이 당신이 추구하는 전부라면 방법.

도움이 되길 바랍니다.

다음과 같은 두 가지 확장 방법을 사용하면 매우 쉬워집니다.

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

거기에는 없다TextWPF RichTextBox 컨트롤의 속성입니다.다음은 모든 텍스트를 추출하는 한 가지 방법입니다.

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

string allText = range.Text;
string GetString(RichTextBox rtb)
{
    var textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    return textRange.Text;
}
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;

다음을 수행하는 것이 어떻습니까?

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

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

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

링크는 다음과 같습니다: 확장 WPF 툴킷 리치 텍스트 상자

정말 놀랍게도RichtTextBox설정된 값과 동일한 값을 반환하지 않습니다!

문자열 설정 방법:

SelectAll()
RichTextBox.Selection.Text = "AA"

다음과 함께 반환:

SelectAll()
Return RichTextBox.Selection.Text

캐리지 리턴과 함께 "AA"를 반환

사용 방법:

Dim Selection = New TextRange(rtbRichTextBox.Document.ContentStart, rtbRichTextBox.Document.ContentEnd)
Selection.Text = "AA"

다음과 함께 반환:

Dim Selection = New TextRange(rtbRichTextBox.Document.ContentStart, rtbRichTextBox.Document.ContentEnd)
Return Selection.Text

동일: "AA"의 경우carriage-return

RichTextBox값을 자산으로 반환하지 않습니다. 매우 잘못된 동작입니다!

이 문제를 해결하는 방법은 다음과 같습니다.

Dim Selection = New TextRange(rtbRichTextBox.Document.ContentStart, rtbRichTextBox.Document.ContentEnd.GetPositionAtOffset(-1))
Return Selection.Text

이에 따르면 텍스트 속성이 있습니다.

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

텍스트를 줄로 구분하려면 "줄" 속성을 사용해 볼 수도 있습니다.

언급URL : https://stackoverflow.com/questions/957441/richtextbox-wpf-does-not-have-string-property-text

반응형