C# 为什么此突出显示代码不能正常工作?
首先,我不会说英语,我会尽力解释我的问题 我使用XAML和C制作了一个聊天控件,我制作了一个带有3列的自定义表控件,直接添加到RichTextBox.Document.Blocks中,一切正常;我有一个代码,用于通过正则表达式突出显示文本,但无法正确突出显示其他内容,但无法突出显示正则表达式匹配项,下面是代码:C# 为什么此突出显示代码不能正常工作?,c#,wpf,regex,richtextbox,C#,Wpf,Regex,Richtextbox,首先,我不会说英语,我会尽力解释我的问题 我使用XAML和C制作了一个聊天控件,我制作了一个带有3列的自定义表控件,直接添加到RichTextBox.Document.Blocks中,一切正常;我有一个代码,用于通过正则表达式突出显示文本,但无法正确突出显示其他内容,但无法突出显示正则表达式匹配项,下面是代码: TextPointer start = message.content.ContentStart; foreach (var x in styles) {
TextPointer start = message.content.ContentStart;
foreach (var x in styles)
{
for (var y = Regex.Match(message.Content as string, x.Key); y.Success; y = y.NextMatch())
{
var textrange = new TextRange(
start.GetPositionAtOffset(y.Index),
start.GetPositionAtOffset(y.Index + y.Length));
textrange.ApplyPropertyValue(TextElement.ForegroundProperty,
new SolidColorBrush(Colors.Red));
}
}
message.content是在段落中运行的,styles是字符串正则表达式和文本样式的字典,但它的实现并不便于阅读
提前谢谢,请原谅我的英语:s除了正则表达式匹配之外,它还突出显示所有东西吗?它突出显示了疯狂的东西,我认为问题在于从偏移量到文本指针的转换,但我无法解决问题…开始偏移量对我有效,但是+y.长度不能创建正确的文本范围-它总是短2-4个字符。根据文档GetPositionAtOffset的偏移量是“符号”而不是可打印字符。因此,将它与从字符串生成的索引一起使用是行不通的。