日期:2014-05-19  浏览次数:20893 次

Richtextbox和Hyperlink的光标控制问题?
Richtextbox和Hyperlink的光标控制问题?

今天遇到一个难题,

如果你用过Richtextbox控件,你会发现,这个控件中如果包含Hyperlink(URL)字串,然后你用鼠标单击这个Hyperlink(URL)的某个字符,你会发现键盘输入光标是无法停在这个字符上的!   也就是说,如果你想要修改Hyperlink(URL)的中某个字符,其操作的复杂程度,远比修改其他普通字符要大.

目前的方法是双击这个Hyperlink(URL)字串,系统会选取包含这个字符的单词,然后使用键盘的方向键将光标移到该移的位置,再做修改。
不过这样,还是比较麻烦!

如果将   Richtextbox.DetectURL设成false,虽然可以解决问题,但是也失去了Hyperlink这个特性。显示效果会大打折扣!!!


所以说,谁有更好的,两全其美的办法解救这个问题?

我的目标是:
1。可以方便的自由编辑Hyperlink(URL)字串
2。显示上必须还是超链接的模样
3。如果对某个Hyperlink(URL)字串按   ctrl   +   mouseclick,会跳出系统默认浏览器。

(一个很好的模仿例子是   ms   word文档中Hyperlink(URL)字串的表现形式,我要的就是它这样的效果)


谢谢!

------解决方案--------------------
private void Form1_Load(object sender, EventArgs e)
{
this.richTextBox1.DetectUrls = false;
}
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ControlKey)
{
richTextBox1.DetectUrls = true;
}
}

private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
{
richTextBox1.DetectUrls = false;
}