在新创建的流文档段落上设置插入符号位置

时间:2012-07-11 20:11:56

标签: c# wpf richtextbox

我在RichTextBox中显示了一个动态流文档,表示两个人之间的对话。

我正在尝试向我的软件添加一个功能,该功能将在插入符号当前处于活动状态的任何现有段落之后添加一个段落(通过使用Tab键)。我能够实现插入,但仍然存在一个错误,我无法将插入位置设置为新创建的段落的开头。我试着把注意力集中在新创建的段落上,但没有运气。

这是tab按下事件的一些测试代码,它在正确的位置添加新段落。 ConversationXContentFlowDocument

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);
    }
}

1 个答案:

答案 0 :(得分:2)

经过调查和一些试验和错误后,我能够使用以下代码解决我的上一个错误,该代码将鼠标插入到新创建的段落的开头。希望这可以帮助别人

TextPointer moveTo = ConversationX
                         .CaretPosition
                         .GetNextInsertionPosition(LogicalDirection.Forward);

if (moveTo != null)    
{   
    myRichTextBox.CaretPosition = moveTo;    
}