gpt4 book ai didi

c# - 如何从 WPF RichTextBox 的 TextChangedEventArgs 中提取更改

转载 作者:行者123 更新时间:2023-11-30 12:44:23 25 4
gpt4 key购买 nike

我正在使用 WPF RichTextBox,我想将它与另一个 RichTextBox(在另一个窗口中)同步。我想做的是当 TextChanged 事件发生时,我尝试提取用户的更改,所以这是我尝试的(用于插入):

void rtb_TextChanged(object sender, TextChangedEventArgs e)
{
var change = e.Changes.FirstOrDefault();
var s = sender as RichTextBox;

var start = s.CaretPosition.GetPositionAtOffset(change.Offset);
var end = s.CaretPosition.GetPositionAtOffset(change.Offset + change.AddedLength);
var range = new TextRange(start, end);
}

但是 Offset 和 AddedLength 值似乎有点不确定。当我输入第一个字符 Offset 为 1(我预计为 0)并且 AddedLength 为 3(我预计为 1)时,然后在第二个字符 Offset = 3 和 AddedLength = 1。此外,当有 5 个字符时,s.CaretPosition .GetPositionAtOffset(3) 返回 null。所以总而言之,我很困惑如何根据事件参数从 RichTextBox 中获取相关内容。你能推荐点什么吗?

最佳答案

您需要阅读以下link来自描述 TextChangedEventArgs 属性的 MSDN。当事件发生时,基础格式可能会发生多项更改,因此您需要从头到尾一次处理提供的 e.Changes 条目集合。

您不应该查看插入符号位置,因为这不会告诉您底层文本发生了什么。同样,这在提供的链接中有更详细的解释。

关于c# - 如何从 WPF RichTextBox 的 TextChangedEventArgs 中提取更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28551757/

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