对RichTextBox以外的组件或C#中的解决方案的建议

时间:2013-02-13 13:01:19

标签: c# checkbox richtextbox

我正在尝试制作用于分析日志的日志查看器。我正在读取每行上有时间戳,日志类型和文本的日志文件。从这里我创建了一个具有DateTime对象,Type和Text的对象。

类型分为6种类型:

public enum LogType
{
    DEBUG = 0,
    EVENT,
    ERROR,
    TEST_STEP,
    WARNING,
    SUCCESS
}

这个想法是每个日志级别旁边都有一个复选框,以便我可以快速添加或删除指定的日志级别。现在,这适用于具有不同日志级别的良好传播的小型日志文件。但是当我有大量的日志文件时,它需要一些时间来加载,因为每次复选框更改时我都会迭代对象数组并再次打印行,这是非常无效的。

是否有更好的方法将这些对象连接到每一行,或者有另一个更适合的组件,以便您可以轻松隐藏或显示日志级别?

最诚挚的问候 安德烈亚斯

2 个答案:

答案 0 :(得分:0)

我所能推荐的只是使用WPF和UI virtualization,这样您就不会在UI中添加大量代表日志行的元素,并且过滤使用parlallelization加速事情并让UI保持响应。

答案 1 :(得分:0)

由于您不需要实时更新,因此您可以读取整个文件,并将不同类型存储在不同的类中,这些类继承自相同的基类。例如,您为每种类型都有一个基类Log和一个派生类DebugLog : Log等。您只能在基类中定义和实现大多数字段,因为它只是存储一些数据,而无需对其进行修改。

这些派生类按类型的日志级别分别存储数据。这样,您可以通过清除列表并仅加载所需类中的数据来刷新UI,而无需再次重新遍历所有数据(当然,取决于过滤器)。

您必须构建某种排序处理程序才能正确显示数据。