WPF RichTextBox作为用于记录目的的文本队列

Erw*_*yer 3 c# queue wpf logging richtextbox

我想用一个RichTextBox WPF控件打印日志输出,但我想知道什么是有经过例如显示超过10000行,如果能够真正实现以删除"最老的"行最有效的方法队列行为,尤其是因为没有简单的"Text"属性可供使用.

不幸的是,我不能够达到这个结果与n日志或者可能是由于错误或限制.

Jef*_*ata 5

您可以使用a Queue<string>来存储日志消息,并使用RichTextBox.Lines属性显示它们.

例如:

    private const int _maxCapacity = 10000;

    private Queue<string> _messageQueue = new Queue<string>(_maxCapacity);

    private void button1_Click(object sender, EventArgs e)
    {
        if (_messageQueue.Count >= _maxCapacity)
        {
            _messageQueue.Dequeue();
        }

        _messageQueue.Enqueue("message " + _count++.ToString());

        richTextBox1.Lines = _messageQueue.ToArray();
    }
Run Code Online (Sandbox Code Playgroud)

如果您希望最新消息显示在顶部,请反转队列:

richTextBox1.Lines = _messageQueue.Reverse().ToArray();
Run Code Online (Sandbox Code Playgroud)