我在RichTextBox中有这个序列:A B AC A DEF
我希望用户将鼠标悬停在序列上,让我知道他们正在查看序列中的第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”,它匹配我想要的位置返回的值。但是,就我所见,我无法访问它。有没有一种方法可以在某个我错过的地方访问这个值,或者我必须采取另一种方式吗?