文本框文本管理

本文关键字:文本 管理 | 更新日期: 2023-09-27 18:22:30

我有一个WPF应用程序,我正试图在其中创建一个与Visual Studio 2010中的"输出窗口"非常相似的"诊断面板"。它只包含一个文本框,所有类型的输出都将在其中收集并使用.AppendText()方法附加在文本框中。

我们有几个客户,他们一直把这个诊断面板挂起来,从来没有清除过。因此,随着新输出的不断出现,会显示大量文本…

WPF TextBox有一个MaxLength属性,我将其设置为0。根据MSDN文档,"当此属性设置为0时,可以在控件中输入的文本的最大长度仅受可用内存的限制。"

对于那些放弃这个面板的客户,我不喜欢让文本和内存不受控制地增长。。。我认为这可能最终导致应用程序挂断。。。

我很好奇是否有一个好的方法来处理这个。。。我想在文本框中显示一定数量的行,并在新的行出现时丢弃最旧的行…

有什么想法吗?

谢谢!

文本框文本管理

为什么不使用一个列表框,每个句子都有自己的文本块,这样你就可以实现虚拟化了?http://social.msdn.microsoft.com/Forums/en/wpf/thread/98090161-0abf-4799-bbcb-852dcc0f0608

您的代码后面可能有一个DispatcherTimer。有了这个,您可以将其设置为每10分钟Tick(或您想要的任何时间段)。在Tick事件处理程序方法中,您可以获取文本框中的文本,丢弃除要保存的文本外的所有文本,然后将该文本设置回文本框。

您也可以将文本保存到日志文本文件中。你必须弄清楚要在文本文件中附加什么,这样你就不会多次向它写入相同的文本。这取决于你的需求。

调度员计时器文档

正如Xaisoft所说,您不应该使用TextBox,而可能使用TextBlock。你可能必须把它放在ScrollViewer里,我不记得了。

以下是处理方法:

  1. 将日志信息写入文本文件
  2. 将日志信息写在你的文本框中(虽然我不喜欢文本框,但应该没问题。)
  3. 在向文本框中写入时,只显示最后20行左右(玩这个)。其他一切都应该"滚蛋"

如果你的用户真的想保存所有内容,没什么大不了的,它已经保存到那个文件中了。

每次执行应用程序时,或者在适当的时间间隔内,将日志记录滚动到一个新文件中。