RichTextBox中的FIFO机制

时间:2010-04-13 08:11:49

标签: c# winforms richtextbox

在RichTextBox控件中有没有一种简单的方法来实现FIFO?

实际上我有一个测试工具,可以在一分钟内产生超过1000行,这就是为什么我想限制总行数,并且当一个新行添加到控件中时,应删除最后一行。

2 个答案:

答案 0 :(得分:0)

今天我遇到了Infinite-Scroll design pattern。我认为这可能会有所帮助。

OLD ANSWER:

List<string> lines = new List<string>();

int max = 2;

int n = 0;

private void button1_Click(object sender, EventArgs e)
{
    lines.Insert(0,n.ToString());

    richTextBox1.Text = string.Join("\n", lines.Take(max).ToArray<string>());

    n++;
}

这是非常简单的FIFO。同样在List<string> l中,您将始终记录:)

答案 1 :(得分:0)

不是您问题的答案,但是您是否在一分钟内阅读了所有1000封邮件? 有没有办法(或者已经是)只记录来自“级别”的邮件。 引自java:

* SEVERE (highest value)
* WARNING
* INFO
* CONFIG
* FINE
* FINER
* FINEST (lowest value)

例如: 通常你会有:消息1(调试)和消息2(严重) 根据其级别对每行进行前缀:

  • 1:消息1
  • 7:消息2

现在您可以修改测试工具以仅记录特定级别。全部7个日志,1个日志仅1个等。 结果是不必要的日志记录和可读输出(例如,2个消息应该紧接着出现,但由于线程,在日志记录之间有20条消息...)