计算RichTextBox行异步计数

问题描述 投票:1回答:1

我编写了一个代码,用于计算Richtextbox内容中的行数和文本长度。只需一小段文字,它就可以完美工作。但是,当我在richtextbox中按“ Enter”或“ Backspace”时,有大量文本(超过100k)时,响应时间变得非常慢。例如:https://i.imgur.com/QO2UrAw.gifv

我的问题。有什么更好的异步方式运行此代码的方法?

与测试项目一起存档 https://gofile.io/?c=LpF409

private void StatusPanelTextInfo()
{
    int currentColumn = 0;
    int currentLine = 0;
    int linesCount = 0;
    if (statusStrip1.Visible)
    {
        currentColumn = 1 + richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexOfCurrentLine();
        RichTextBox rtb = new RichTextBox
        {
            WordWrap = false,
            Text = richTextBox1.Text
        };
        currentLine = 1 + rtb.GetLineFromCharIndex(richTextBox1.SelectionStart);
        linesCount = richTextBox1.Lines.Count();
        if (linesCount == 0)
        {
            linesCount = 1;
        }
    }
    toolStripStatusLabel1.Text = "Length: " + richTextBox1.TextLength;
    toolStripStatusLabel2.Text = "Lines: " + linesCount;
    toolStripStatusLabel3.Text = "Ln: " + currentLine;
    toolStripStatusLabel4.Text = "Col: " + currentColumn;
}
c# windows winforms richtextbox statusstrip
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.