RichTextBox (WPF) के पास स्ट्रिंग संपत्ति नहीं है "पाठ"


113

मैं अपने रिच टेक्स्ट बॉक्स का टेक्स्ट सेट / प्राप्त करने की कोशिश कर रहा हूं, लेकिन टेक्स्ट अपने गुणों की सूची में नहीं है, जब मैं टीटीई टेक्स्ट प्राप्त करना चाहता हूं ...

मैं C # (.net फ्रेमवर्क 3.5 SP1) के पीछे कोड का उपयोग कर रहा हूं

RichTextBox test = new RichTextBox();

नहीं पा सकता test.Text(?)

क्या आप जानते हैं कि यह कैसे संभव हो सकता है?

जवाबों:


122

रिच टेक्स्ट बॉक्स सेट करने के लिए :

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

रिच टेक्स्ट बॉक्स पाने के लिए :

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

2
कंस्ट्रक्टर 'रन' में 0 पैरामीटर (ओं) हैं, लेकिन 1 तर्क (एस) के साथ लागू किया गया है, पैराग्राफ के लिए समान है
alvinmeimoun

@alvinmeimoun वास्तव में, Paragraph()एक था Paragraph(Inline)अधिभार .NET 3.5 के बाद से कम से कम (और Run(string)भी मान्य था - तो यह और भी उदाहरण में है)।
ड्रैगोमोक

1
इतना जटिल क्यों?
प्रोजर १३५

FontFamilyपैराग्राफ में कैसे जोड़ें ?
मथियस मिरांडा

64

में RichTextBox के बीच एक भ्रम की स्थिति थी System.Windows.Forms और में System.Windows.Control

मैं नियंत्रण में एक का उपयोग कर रहा हूं क्योंकि मैं WPF का उपयोग कर रहा हूं। इसमें, कोई पाठ गुण नहीं है, और एक पाठ प्राप्त करने के लिए, मुझे इस पंक्ति का उपयोग करना चाहिए:

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


4

"विस्तारित WPF टूलकिट" अब पाठ संपत्ति के साथ एक अमीर टेक्स्ट प्रदान करता है।

आप पाठ को विभिन्न स्वरूपों (XAML, RTF और सादे) में प्राप्त या सेट कर सकते हैं।

यहाँ लिंक है: विस्तारित WPF टूलकिट RichTextBox


-10

इसके अनुसार इसमें एक Text गुण है

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

यदि आप पाठ को लाइनों के रूप में तोड़ना चाहते हैं तो आप "लाइन्स" प्रॉपर्टी को भी आज़मा सकते हैं।


12
यह WPF है, Win Forms नहीं।
कामरानिकस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.