gpt4 book ai didi

c# - 从 TextPointer 检索 CharOffset

转载 作者:行者123 更新时间:2023-12-04 18:08:25 31 4
gpt4 key购买 nike

我在 RichTextBox 中有这个序列:ABACADEF

我希望用户将鼠标悬停在序列上,这样我就能够知道他们正在查看序列中的第 N 个字符。如果用户将鼠标悬停在 C 上,我应该得到 4。

我从这段代码开始:

Point mousePosition = Mouse.GetPosition(richTextBox);
TextPointer position = richTextBox.GetPositionFromPoint(mousePosition, true);
int offset = richTextBox.Document.ContentStart.GetOffsetToPosition(position);

但是,我不能使用 GetOffsetToPosition(position);在 richTextBox 上,因为文本包含格式,所以偏移量与我期望的值不匹配。例如,由于 B 上的格式,C 不会返回 4,它可能会返回 8。我想获得忽略格式的偏移量。

通过调试可以看出,TextPointer 包含成员变量“CharOffset”,该成员变量与我希望按位置返回的值相匹配。但是,据我所知,我无法访问它。是否有一种方法可以在我错过的地方访问此值,或者我必须以其他方式执行此操作?

最佳答案

我来这里是为了寻找不需要使用反射的答案。然而,没有看到答案,这里是使用反射的答案。

public static class TextPointerExtensions
{
private static readonly PropertyInfo CharOffestProperty = typeof(TextPointer).GetProperty("CharOffset", BindingFlags.NonPublic | BindingFlags.Instance);
public static int GetCharOffsetUsingReflection(this TextPointer textPointer)
{
return (int)CharOffestProperty.GetValue(textPointer);
}
}

关于c# - 从 TextPointer 检索 CharOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20633776/

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