我正在将格式应用于WPF RichTextBox中选定的标记。为此,我得到了一个TextRange,它包含了我想要突出显示的标记。然后,我将更改文本的颜色如下:
// Get start and end pointer for token
TextPointer startPointer = run.ContentStart.GetPositionAtOffset(startOffset);
TextPointer endPointer = run.ContentStart.GetPositionAtOffset(endOffset);
// Get text range for token
TextRange textRange = new TextRange(startPointer, endPointer);
// Highlight token
textRange.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Blue);这发生在我的TextChanged事件的RichTextBox上。
格式按预期的方式应用,但继续键入文本将导致新文本继承已应用于相邻单词的格式。我希望任何新文本的格式使用RichTextBox属性中定义的默认格式设置选项。这个是可能的吗?
或者,我可以高亮显示我不希望使用默认格式选项的所有标记,但这让我感到很尴尬。
发布于 2010-04-05 11:21:34
这不是标准的行为吗?如果我在Word中突出显示文本,使其粗体化,将光标移到文本旁边并键入,新文本也会变得粗体。我可以想象,MS使富文本框的工作方式类似于Word中的文本区域。
如果您基于匹配一些条件(例如语法高亮显示)来选择标记,那么在光标距标记1字符之后,您是否可以尝试将样式应用于文本?例如:
SomeToken _x
而不是
SomeToken=
其中|是游标。在第一个示例中,游标与令牌之间有一个空格,因此如果程序找到SomeToken,它将得到从S之前到(空格)的文本范围。我可以想象这种风格不会适用于新输入的文本。
我承认这只是猜测,我可能从你的问题描述中误解了你的确切情况。更多的代码可能会有所帮助,特别是您提到的TextChanged事件,或者创建文本范围的代码。
https://stackoverflow.com/questions/2577966
复制相似问题