我想把插入符号4个位置移动到我的插入符号所在的位置.我已注册PreviewKeyDown,并InsertTextInRun()在捕获tab键时调用,如下所示:
private void rtb_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
rtb.CaretPosition.InsertTextInRun(" ");
e.Handled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在拨打电话后,插入符号保持不变InsertTextInRun().它并没有移动到新的文字,这是我想要的行为结束.我该怎么做?
暂且不说 - 是的,我知道AcceptsTab房产RichTextBox.我选择忽略is并滚动我自己的标签功能,因为tabbing具有AcceptsTab在后续行上缩进文本的令人讨厌的副作用,这不是我想要的.
我刚刚碰到了同样的问题.似乎最终的插入位置取决于它在插入之前移动的方式.
下面的代码确保(3.5sp1)插入后,光标将位于插入文本的右侧:
rtb.CaretPosition = rtb.CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
rtb.CaretPosition.InsertTextInRun(text);
Run Code Online (Sandbox Code Playgroud)
请注意,插入符号的LogicalDirection属性可能(并且必须)由此更改; 仅仅创建正确的TextPointer是不够的.
| 归档时间: |
|
| 查看次数: |
4745 次 |
| 最近记录: |