3

我有一个动态流文档显示在一个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);
    }
}
4

1 回答 1

2

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

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

if (moveTo != null)    
{   
    myRichTextBox.CaretPosition = moveTo;    
}
于 2012-07-12T15:32:40.617 回答