c# - 将新段落追加到 RichTextBox

标签 c# .net wpf richtextbox

我需要以编程方式向 RichTextBox 控件添加一个新段落(就像按 Enter 一样)。使用下面的代码,它确实添加了一个新段落,但是:

  • 它删除控件中的所有现有文本
  • 插入点保留在第一行,不会移动到第二个新创建的行
  • 它似乎只添加了一次新段落,也就是说,如果我第二次运行代码,则不会创建第三段

            FlowDocument flowDoc= rtbTextContainer.Document;
            Paragraph pr = new Paragraph();                
            flowDoc.Blocks.Add(pr);
            rtbTextContainer.Document = flowDoc;
    

我正在测试一些东西——我注释掉了第二行和第三行代码,所以我只阅读了文档并立即将它再次设置回 RichTextBox,但这也删除了所有现有文本,所以问题可能与此有关,但我无法弄清楚。

我怎样才能克服这些问题并以编程方式附加一个新段落,然后设置其焦点。

谢谢

最佳答案

部分 View :

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <RichTextBox x:Name="RichTextBox1"/>
    <Button Grid.Row="1" Content="click-me" Click="Button_Click"/>
</Grid>

以及背后的代码:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var paragraph = new Paragraph();
    paragraph.Inlines.Add(new Run(string.Format("Paragraph Sample {0}", Environment.TickCount)));
    RichTextBox1.Document.Blocks.Add(paragraph);

    RichTextBox1.Focus();
    RichTextBox1.ScrollToEnd();
}

希望对你有帮助。

关于c# - 将新段落追加到 RichTextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640039/

相关文章:

c# - 正则表达式匹配从头开始

.net - 在 WCF 服务库项目中在哪里设置和存储应用程序状态?

.net - 代码背后的文字

c# - 如何发送正文中包含字符串数组的 post 请求

c# - 出现在 VS.NET IDE 上的这个符号是什么?

c# - 如何测试 C# Sql server 顺序 GUID 生成器?

c# - 回发后动态创建的控件丢失数据

wpf - 如何推迟对 WPF 中的绑定(bind)的更新

c# - 在 ScrollView 中滚动到选定的 Treeviewitem

c# - 向 WPF 窗口实例添加资源