文本框文本管理
本文关键字:文本 管理 | 更新日期: 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
里,我不记得了。
以下是处理方法:
- 将日志信息写入文本文件
- 将日志信息写在你的文本框中(虽然我不喜欢文本框,但应该没问题。)
- 在向文本框中写入时,只显示最后20行左右(玩这个)。其他一切都应该"滚蛋"
如果你的用户真的想保存所有内容,没什么大不了的,它已经保存到那个文件中了。
每次执行应用程序时,或者在适当的时间间隔内,将日志记录滚动到一个新文件中。