我在 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);
}
}
最佳答案
经过调查和一些试验和错误后,我能够使用以下代码解决我的最后一个错误,该代码将鼠标插入符号放置在新创建的段落的开头。希望这可以帮助其他人
TextPointer moveTo = ConversationX
.CaretPosition
.GetNextInsertionPosition(LogicalDirection.Forward);
if (moveTo != null)
{
myRichTextBox.CaretPosition = moveTo;
}
关于c# - 在流程文档的新创建段落上设置插入符号位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11440685/