WinForm RichTextBox 添加超链接

由于项目中需要对文本操作就用了RichTextBox,可是RichTextBox不能添加想word一样的超链接(也许可以,本人未发现),添加超链接会变成文本+<连接地址>的形式,无论是后台导入Rtf文档还是从word里粘贴出来都会出现那种现象。

只找到两种不能完全解决的方法,现在大家帮忙看看有没有完美的解决方法。

前提都是要设置RichTextBox的DetectUrls为True

True  粘贴或是别的手段加入的超链接都会是真正的超链接(虽然不加事件点击没反应)

false  粘贴或是别的手段加入的超链接看起来是超链接其实没有超链接属性(加了连接事件也没反应)

方法1:给RichTextBox 加LinkClicked 事件

View Code
  void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)      
  {         
   MessageBox.Show(e.LinkText);
//"链接< http://www.baidu.com >" sender 是 整个下划线部分,e是后面<>里的部分//这里可以在浏览器中打开,也可以自己的窗体打开  
  }

这样看起来和word不一样客户有意见,除非就是把所有链接的文字和链接地址存放到字典,可是文字也不能设置点击事件,郁闷中。。。

方法2:给RichTextBox 加LinkLabel控件

View Code
LinkLabel lb = new LinkLabel();  
lb.Text = "超链接";           
object obj = new object();            
obj = "www.baidu.com";            
lb.Links.Add(new LinkLabel.Link(0, 3, obj));            
lb.LinkClicked += new LinkLabelLinkClickedEventHandler(lb_LinkClicked);            
richTextBox1.Controls.Add(lb);

这样LinkLabel 其实就是控件不仅会占用地方(看起来一片)而且不能编辑,感觉很不爽。。。

难道超链接没有一个完美的解决方案么?(看起来和word里一样,用起来和word里也要一样至少表面上要这样)。

希望对有需要的人一点帮助,如果有完美解决方法希望指点一二。

posted @ 2011-07-21 16:36  天使与鸟人  阅读(3983)  评论(1编辑  收藏  举报