RichTextBox (WPF) "Metin" dize özelliğine sahip değil


114

RichTextBox'ımın metnini ayarlamaya / almaya çalışıyorum, ancak Metin test almak istediğimde özelliklerinin listesi arasında değil.Text ...

C # (.net çerçevesi 3.5 SP1) arkasında kod kullanıyorum

RichTextBox test = new RichTextBox();

sahip olamamak test.Text(?)

Bunun nasıl mümkün olabileceğini biliyor musun?

Yanıtlar:


122

için ayarlanan RichTextBox metni:

richTextBox1.Document.Blocks.Clear();
richTextBox1.Document.Blocks.Add(new Paragraph(new Run("Text")));

için olsun RichTextBox metni:

string richText = new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd).Text;

2
Yüklenici 'Çalıştır' 0 parametreye sahip ancak 1 bağımsız değişkenle
çağrılıyor

@alvinmeimoun Aslında, en azından .NET 3.5'ten beri aşırı yükleme Paragraph()vardı (ve aynı zamanda geçerliydi - örnekte bile). Paragraph(Inline)Run(string)
Dragomok

1
neden bu kadar karmaşık?
prouser135

FontFamilyParagrafa nasıl eklenir ?
Matheus Miranda

64

System.Windows.Forms ve içindeki RichTextBox arasında bir karışıklık vardı System.Windows.Control

WPF'yi kullandığım için Kontrol'de olanı kullanıyorum. Orada Metin özelliği yok ve bir metin almak için şu satırı kullanmalıydım:

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

Teşekkürler


38

WPF RichTextBox, Documentiçeriği bir MSDN olarak ayarlamak için bir özelliğe sahiptir :

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

AppendTextPeşinde olduğunuz tek şey buysa , yöntemi kullanabilirsiniz .

Umarım yardımcı olur.


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

13

İki uzatma yöntemi kullanarak bu çok kolay hale gelir:

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 denetiminde özellik yoktur . İşte tüm metni çıkarmanın bir yolu:

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

string allText = range.Text;

8

Aşağıdakileri yapmaya ne dersiniz:

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

1
Şimdiye kadar bulabildiğim en iyi cevap :) Uzunluğu bir GUI'de başka bir rtxb_input.SelectAll(); txb_InputLength.Text = rtxb_input.Selection.Text.Length.ToString();
Metin Kutusuna

8
RichTextBox rtf = new RichTextBox();
System.IO.MemoryStream stream = new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(yourText));

rtf.Selection.Load(stream, DataFormats.Rtf);

VEYA

rtf.Selection.Text = yourText;


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.