【问题标题】:Append New Paragraph To RichTextBox将新段落附加到 RichTextBox
【发布时间】:2015-04-22 18:50:07
【问题描述】:

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

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

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

我正在测试一些东西 - 我注释掉了第二行和第三行代码,所以我只是阅读了 Document 并立即再次将其设置回 RichTextBox,但这也删除了所有现有文本,所以问题可能有什么关系,但我想不通。

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

谢谢

【问题讨论】:

  • 我无法重现文本删除。我尝试了代码中显示的情况和您最简单的情况——获取和设置FlowDocument——并且控件中的文本没有被删除。这里还有其他事情没有在问题中显示吗?也许是数据绑定?

标签: c# .net wpf richtextbox


【解决方案1】:

部分视图:

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

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2012-08-31
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多