我想将插入符号移动到当前插入符号位置的右侧 4 个位置。我已注册PreviewKeyDown
,并调用InsertTextInRun()
当 Tab 键被捕获时,如下所示:
private void rtb_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
rtb.CaretPosition.InsertTextInRun(" ");
e.Handled = true;
}
}
问题是,在调用后插入符保持在原位InsertTextInRun()
。确实如此not移动到新文本的末尾,这是我想要的行为。我该怎么做?
顺便说一句 - 是的,我知道AcceptsTab
属性于RichTextBox
。我选择忽略 is 并推出我自己的选项卡功能,因为使用AcceptsTab
在后续行中缩进文本有一个令人讨厌的副作用,即not我想要的是。
我刚刚遇到了同样的问题。看来最终插入符的位置取决于它在插入之前移动的方式。
以下代码确保(3.5sp1)插入后,光标将位于插入文本的右侧:
rtb.CaretPosition = rtb.CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
rtb.CaretPosition.InsertTextInRun(text);
请注意,插入符号的 LogicalDirection 属性可能(并且必须)因此而更改;仅仅创建正确的 TextPointer 是不够的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)