gpt4 book ai didi

c# - WPF RichTextBox ApplyPropertyValue

转载 作者:行者123 更新时间:2023-11-30 16:24:42 26 4
gpt4 key购买 nike

我在我的 WPF Richtextbox 中突出显示了所有不间断空格的出现。找到所需的文本范围后,我会调用:

textrange.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.DarkRed);

而且效果很好。但是,如果突出显示发生在文档末尾,则所有新键入的文本也会突出显示,这很糟糕。有人知道如何解决这个问题吗?

完整代码:

private void HighLightNonbreakSpace()
{
var start = this.Document.ContentStart;
char nonBreakSpace = System.Convert.ToChar(160);
while (start != null && start.CompareTo(this.Document.ContentEnd) < 0)
{
if (start.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
var match = start.GetTextInRun(LogicalDirection.Forward).IndexOf(nonBreakSpace);
if (match >=0)
{
var matchPos = start.GetPositionAtOffset(match, LogicalDirection.Forward);
var textrange = new TextRange(matchPos, matchPos.GetPositionAtOffset(1,LogicalDirection.Forward));
textrange.ApplyPropertyValue(TextElement.BackgroundProperty, Brushes.DarkRed);
start = textrange.End;
}
}
start = start.GetNextContextPosition(LogicalDirection.Forward);
}
}

最佳答案

您可能不仅需要突出显示 nbsps,还需要取消突出显示其他所有内容,即在您的例程中添加一个 else 分支。默认情况下,新键入的文本将从它之前的任何内容获取其属性,因此您必须确定最后键入的字符是否为 nbsp 并相应地设置其属性。

关于c# - WPF RichTextBox ApplyPropertyValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10582197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com