2009-06-05 11 views
94

नहीं है, मैं अपने RichTextBox के पाठ को सेट/प्राप्त करने का प्रयास कर रहा हूं, लेकिन जब मैं परीक्षण प्राप्त करना चाहता हूं तो पाठ इसकी गुणों की सूची में नहीं है। टेक्स्ट ...RichTextBox (WPF) में स्ट्रिंग प्रॉपर्टी "टेक्स्ट"

मैं सी # में कोड का उपयोग कर रहा पीछे (.NET Framework 3.5 SP1)

RichTextBox test = new RichTextBox(); 

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

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

उत्तर

-9

इस के अनुसार यह एक पाठ संपत्ति

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

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

+10

इस WPF है, फार्म विन नहीं। – kamranicus

61

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

में मैं नियंत्रण में एक के रूप में मैं WPF उपयोग कर रहा हूँ उपयोग कर रहा हूँ। वहाँ में, वहाँ कोई पाठ संपत्ति है, और आदेश में एक पाठ प्राप्त करने के लिए, मैं इस लाइन का इस्तेमाल किया जाना चाहिए था:

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

धन्यवाद

37

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 विधि यह है कि अगर सब है कि आप के बाद कर रहे हैं का उपयोग कर सकते हैं।

उम्मीद है कि मदद करता है।

9

WPF RichTextBox नियंत्रण में Text संपत्ति नहीं है।

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

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

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

आप टेक्स्ट को विभिन्न प्रारूपों (एक्सएएमएल, आरटीएफ और सादे टेक्स्ट) में प्राप्त या सेट कर सकते हैं।Extended WPF Toolkit RichTextBox

5

कैसे सिर्फ निम्न कार्य के बारे में:

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

सबसे अच्छा जवाब जो मैं अब तक पा सकता हूं :) यहां मेरा कोड यदि आप GUI में किसी अन्य टेक्स्टबॉक्स में लंबाई पेस्ट करना चाहते हैं: 'rtxb_input.SelectAll();' 'txb_InputLength.Text = rtxb_input.Selection.Text.Length। ToString(); ' –

91

करने के लिए सेट 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 पैरामीटर हैं लेकिन पैराग्राफ – alvinmeimoun

+0

@alvinmeimoun वास्तव में, 'अनुच्छेद()' के लिए 'पैराग्राफ (इनलाइन)' ओवरलोड [पर) के साथ 1 तर्क (ओं) के साथ लागू किया गया है कम से कम .NET 3.5] (https://msdn.microsoft.com/en-us/library/ms597388 (v = vs.90) .aspx) (और 'रन (स्ट्रिंग)' भी मान्य था - यह भी है उदाहरण)। – Dragomok

+0

इतना जटिल क्यों? – prouser135

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

दो विस्तार तरीकों का उपयोग करना, यह बहुत आसान हो जाता है:

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; 
    } 
} 
संबंधित मुद्दे