2012-02-14 19 views
7

पर हाइपरलिंक जोड़ना मैं WPF और C# का उपयोग करके एक रिचटेक्स्टबॉक्स में गतिशील रूप से कुछ हाइपरलिंक्स जोड़ने की कोशिश कर रहा हूं लेकिन मुझे बहुत सफलता नहीं मिल रही है। मेरे कोड का सारांश नीचे दिया गया है:गतिशील रूप से एक RichTextBox

FlowDocument doc = new FlowDocument(); 
richTextBox1.Document = doc; 
richTextBox1.IsReadOnly = true; 

Paragraph para = new Paragraph(); 
doc.Blocks.Add(para); 

Hyperlink link = new Hyperlink(); 
link.IsEnabled = true; 
link.Inlines.Add("Hyperlink"); 
link.NavigateUri = new Uri("http://www.google.co.uk"); 
link.Click += new RoutedEventHandler(this.link_Click); 
para.Inlines.Add(link); 

.... 

protected void link_Click(object sender, RoutedEventArgs e) { 
    MessageBox.Show("Clicked link!"); 
} 

जब मैं इस RichTextBox चलाने लिंक प्रदर्शित लेकिन यह ग्रे है और मैं उस पर क्लिक नहीं कर सकते हैं? क्या कोई कृपया बता सकता है कि मैं कहां गलत हो रहा हूं।

धन्यवाद।

उत्तर

9

Document में डिफ़ॉल्ट रूप से अक्षम किया गया है, RichtTextBox.IsDocumentEnabled से true पर सेट करें।

+0

धन्यवाद! एक इलाज करता है। – PaulN

+0

@PaulN: आपका स्वागत है, खुशी हुई यह मदद की :) –

+0

यह डिफ़ॉल्ट रूप से क्यों नहीं है? –

2

एक richTextBox पाठ पढ़ने और एक लिंक और इसे एक के लिए एक सरल समाधान:

richTextBox.IsDocumentEnabled = true; 

TextPointer t1 = richTextBox1.Document.ContentStart; 
TextPointer t2 = richTextBox1.Document.ContentEnd; 
TextRange tr = TextRange(t1,t2); 
string URI = tr.Text; 

Hyperlink link = new Hyperlink(t1, t2); 

link.IsEnabled = true; 
link.NavigateUri = new Uri(URI); 
link.RequestNavigate += new RequestNavigateEventHandler(link_RequestNavigate); 


private void link_RequestNavigate(object sender,RequestNavigateEventArgs e) 
{ 
    System.Diagnostics.Process.Start(e.Uri.AbsoluteUri.ToString()); 
} 
संबंधित मुद्दे