【发布时间】:2011-02-19 08:31:18
【问题描述】:
当用户在 WPF RichTextBox 中输入时,我正在尝试将一些文本转换为超链接。
我的第一次尝试涉及在每个 KeyUp 上运行此代码:
Regex r = new Regex("[A-Z]{3}");
FlowDocument doc = this.inputBox.Document;
String text = new TextRange(doc.ContentStart, doc.ContentEnd).Text;
foreach (Match m in r.Matches(text))
{
TextPointer start = doc.ContentStart.GetPositionAtOffset(m.Index + 2);
TextPointer end = doc.ContentStart.GetPositionAtOffset(m.Index + m.Length + 2);
Hyperlink sp = new Hyperlink(start, end);
}
当用户第一次输入由 3 个大写字母组成的序列 ABC 时,此操作正确运行,但当输入第二个序列时,超链接创建失败并出现异常。调试时查看变量,似乎两个 TextPointer 一直指向第一个序列。
【问题讨论】:
标签: c# wpf richtextbox hyperlink flowdocument