.net - WPF RichTextBox - 键入文本的格式

标签 .net wpf formatting richtextbox textrange

我正在对 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);

这发生在我的 RichTextBox 的 TextChanged 事件上。

格式已按预期应用,但继续键入文本将导致新文本继承已应用于相邻单词的格式。我希望任何新文本的格式设置都使用 RichTextBox 属性中定义的默认格式设置选项。这可能吗?

或者,我可以使用默认格式选项突出显示我不希望显示为蓝色的所有标记,但这对我来说很尴尬。

最佳答案

这不是标准行为吗?如果我在 Word 中突出显示文本,将其设置为粗体,将光标移动到该文本旁边并键入,新文本也会变为粗体。我认为 MS 使富文本框的工作方式与 Word 中的文本区域类似。

如果您根据匹配某些条件(例如语法突出显示)来选择标记,您可以尝试在光标距标记 1 个字符之后将样式应用到文本吗?例如:

SomeToken |

而不是

SomeToken|

哪里|是光标。在第一个示例中,光标与标记之间用空格分隔,因此如果您的程序找到 SomeToken它将获取 S 之前的文本范围到之前(空间)。我想该样式将不会应用于新输入的文本。

我承认这只是一个猜测,我可能从你的问题描述中误解了你的具体情况。更多代码可能会有所帮助,特别是 TextChanged您提到的事件,或创建文本范围的代码。

关于.net - WPF RichTextBox - 键入文本的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2577966/

相关文章:

html - 如何让 IntelliJ IDEA 保持 HTML 嵌套选项卡?

.net - 如何计算一段 .NET 代码的 CPU 使用率?

c# - 如何删除 datagrid wpf 中的选定行?

wpf - 通知 DevExpress 数据网格中 View 上的模型属性发生更改

php - 如何在 PHP 中将数字格式化为美元金额

java - 打开文件时如何在 emacs 中自动缩进?

c# - 目标机主动拒绝导致无法连接?

c# - 如何让 .NET Windows 服务检测登录、注销和切换用户事件?

.net - 禁用并选择 asp.net mvc Html.RadioButtonFor

c# - Prism shell 模板,正在创建 ShellView 的两个实例