将新段落附加到RichTextBox

时间:2015-02-20 23:33:54

标签: c# .net wpf richtextbox

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

  • 删除控件中的所有现有文本
  • 插入点位于第一行,并且不会移动到第二个新创建的行
  • 似乎只添加一个新段落,即如果我第二次运行代码,则不会创建第三段

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

我正在测试一些东西 - 我注释掉了第二行和第三行代码,因此我只是阅读了Document并立即将其重新设置回RichTextBox,但这也删除了所有现有文本,因此问题可能出现与此有关,但我无法弄清楚。

如何克服这些问题并以编程方式添加新段落,然后设置其焦点。

由于

1 个答案:

答案 0 :(得分:8)

部分观点:

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

我希望它有所帮助。

相关问题