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

标签 c# wpf richtextbox

我在 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/

相关文章:

c# - 条件运算符,验证问题

c# - 如何更改 Xceed WPF DateTimePicker 日历的大小

wpf - 检测 RichTextBox 中插入符号位置何时发生变化

c# - 即使在清除 RichTextbox 后,段落仍显示为另一个元素的子元素

c# - Mongodb C# 驱动程序在映射复杂类时抛出异常

c# - 为什么 azure 函数看不到配置的连接字符串?

c# - 从标签 : are custom properties (with DP) not using the setter? 派生的 WPF 控件

c# - 更改任何一个元素时如何保持 RichText 格式(粗体/斜体/等)?

c# - 如何让我的程序检查安装是否已完成,然后检查 "come back to life"

c# - 如何让 Microsoft Coded UI Test Builder 识别 ItemsControl?