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

  • 删除控件中的所有现有文本
  • 插入点保留在第一行,不会移动到第二个新创建的行
  • 似乎只添加了一次新段落,即如果我第二次运行代码,则不会创建第三段
            FlowDocument flowDoc= rtbTextContainer.Document;
            Paragraph pr = new Paragraph();
            flowDoc.Blocks.Add(pr);
            rtbTextContainer.Document = flowDoc;
    

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

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

    谢谢

    最佳答案

    部分观点:

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

    10-09 06:42