最近在实现一个类似QQ样的东东.和richtextbox打了不少交道,目前解决了一部分问题,
在插入中文链接时 会导致整个richtextbox的中文内容出现乱码.这个问题其实还是编码引起的.一开始时我也在网上找了一段时间,却发现没有相应的方案来处理.
public
void InsertLink(string text, string hyperlink, int position)
{
if (position < 0 || position > this.Text.Length)
throw new ArgumentOutOfRangeException("position");
this.SelectionStart = position;
this.SelectedRtf = @"{\rtf1\ansi " + text + @"\v #" + hyperlink + @"\v0}";
this.Select(position, text.Length + hyperlink.Length + 1);
this.SetSelectionLink(true);
this.Select(position + text.Length + hyperlink.Length + 1, 0);
}
在selectedrtf中改一下编码即可实现中文链接的处理
this
.SelectedRtf = @"{\rtf1\ansicpg936 " + text + @"\v #" + hyperlink + @"\v0}";
这个我们就有了中文的链接,如果要处理链接的事件,只要注册一下richtextbox的连接事件LinkClicked
void
gRichTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
这里可以获取相应的连接文本.
}
中文连接的问题解决了,下面要解决的问题就是当点了连接后,如果修改连接的内容.事件提供的参数是不可修改的.