Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在多行文本框中显示日志文件_C#_.net_Winforms_Logging_Textbox - Fatal编程技术网

C# 在多行文本框中显示日志文件

C# 在多行文本框中显示日志文件,c#,.net,winforms,logging,textbox,C#,.net,Winforms,Logging,Textbox,我正在将数据写入日志文件,需要在WinForms UI中显示该数据。我最初的想法是使用如下多行文本框: private void UpdateUITextbox(string text) { textBoxStatus.AppendText(text + Environment.NewLine); } 我不会在日志文件中写入大量文本,但随着时间的推移,这些文本会累积起来,最终可能会超过多行文本框的默认最大长度。我能想到的防止这种情况发生的唯一方法是挂接OnKeyPress事件处理程序,

我正在将数据写入日志文件,需要在WinForms UI中显示该数据。我最初的想法是使用如下多行文本框:

private void UpdateUITextbox(string text)
{
    textBoxStatus.AppendText(text + Environment.NewLine);
}
我不会在日志文件中写入大量文本,但随着时间的推移,这些文本会累积起来,最终可能会超过多行文本框的默认最大长度。我能想到的防止这种情况发生的唯一方法是挂接OnKeyPress事件处理程序,在添加内容之前检查文本框的长度,必要时删除旧文本,为新文本腾出空间。但这似乎肯定会对性能产生影响。有人告诉我有更好的方法吗?

Winforms文本框有一个


在您担心内存问题之前,您必须先考虑可用性问题—如果日志太长,您的用户将无法有效地使用它。

我们将使用日志显示日志。它可以很好地扩展到数十万行。

为什么不使用列表框而不是多行文本框?
对于日志,最好在保存日志的同时向日志中添加更多信息,如时间。
在加载时,读取每一行的日期戳,其范围在您认为最近的范围内。 一次加载所有日志文件是不明智的。仅加载新的。

如果您需要查看较旧的日志,您仍然可以使用时间/日期戳解决方案来管理这些日志。

我将查看集合中的每一行,并将某种类型的中继器绑定到其中。然后,您可以删除集合中较旧的行,或者只使用一个只显示前x行的筛选器。想一想哪怕显示10万行的性能冲击。嗨,侯赛因。谢谢你的建议!我很感激。2GB当然是大量的日志数据,你提出了一个非常有效的观点:这样大小的日志的有效性。谢谢你的反馈。