在流程文档的新创建的段落上设置插入符号位置
问题描述:
我在RichTextBox
中显示了一个动态流程文档,表示两个人之间的对话。在流程文档的新创建的段落上设置插入符号位置
我正在尝试向我的软件中添加一个功能,该功能会在插入光标当前处于活动状态的任何现有段落之后添加一段(使用Tab键)。我能够实现插入,但仍然存在一个错误,我无法将插入位置设置为新创建的段落的开头。我试图专注于新创建的段落,但没有运气。
这里是一些测试代码,用于tab按下的事件,它在正确的位置添加了新的段落。 ConversationXContent
是一个FlowDocument
。
private void RichTextBox_KeyDown(object sender, KeyEventArgs e)
{
if(e != null && e.Key == Key.Tab)
{
Paragraph p = new Paragraph();
p.Tag = "NewParagraph";
p.SetResourceReference(Paragraph.StyleProperty, "CharacterViewStyle");
p.Inlines.Add("NEW PARAGRAPH");
ConversationXContent.Blocks.InsertAfter(ConversationX.CaretPosition.Paragraph, p);
}
}
答
调查和一些试验和错误后,我能解决我用下面的代码放置鼠标插入符号到新创建的段落的开始最后的bug。希望这可以帮助其他人
TextPointer moveTo = ConversationX
.CaretPosition
.GetNextInsertionPosition(LogicalDirection.Forward);
if (moveTo != null)
{
myRichTextBox.CaretPosition = moveTo;
}
你真的*不需要检查'e'为null。 – Adam 2012-07-11 20:39:59