适用于大型内容的WPF Multiline TextBox

时间:2009-09-11 20:25:13

标签: c# wpf textbox multiline

在WPF应用程序中,我想构建一个“在文件中查找”输出窗格,在该窗格中我可以流式传输大量文本,而无需在每行重新分配内存,就像TextBox那样。

WPF TextBox有一个Text属性,用于存储连续的字符串。每次,我想添加内容,我需要做textBox.Text += "New Text",这很糟糕。

理想情况下,该控制是虚拟的,只需要最少的资源,仅用于可见线。

我考虑过将标准ListBoxVirtualizingStackPanel一起使用,但它不允许跨行进行文字选择。

(在添加的每个新行中,我希望控件更新)

有什么建议吗?

4 个答案:

答案 0 :(得分:17)

如果您的应用程序中的搜索结果不会超过一万个,那么TextBlock控件或只读多行TextBox就足够了。

TextBox类有一个AppendText()方法,应该足够快。

如果您需要文本突出显示/格式化,那么您可能想要使用RichTextBox。

答案 1 :(得分:5)

如果您的内容非常大,那么很遗憾,所有WPF文本框和类似控件都非常慢。见this question。您可以使用AvalonEdit作为替代。

答案 2 :(得分:0)

您是否考虑或尝试过RichTextBox控件?

答案 3 :(得分:-2)

StringBuilder,只需将文本附加到“字符串”构建器,而不是执行

textBox.Text += moreText;

myStringBuilder.Append(moreText);
textBox.Text = myStringBuilder.ToString();

这应该处理Schlemiel the Painter's算法。

当然,字符串构建器必须是您的类的成员,因此它存在于对象的生命周期中。