当向 RichTextBox 添加更多文本并突出显示时,它会清除所有以前的突出显示

我正在制作一个调试/日志表单,用于保存特定时间在其他表单中完成的所有操作:例如按下按钮、在文本框中输入一些信息等。


下面我放置了解释此内容的代码:CMD = RichTextBox

private void ChequearDatos()

{

    string line = CMD.Text;

    int x = xk, xx = 0, lent = 0;

    lent = line.Length;


    do

    {

        else if (line[x] == '\n')

        {

            xk = x;                   

            x++;

        }


        else if (line[x] == '■')

        {

            xx = x + 1;

            do

            {

                xx = xx + 1;

            }

            while (line[xx] != '=');

            string pedazo = line.Substring(x + 2, (xx - x) - 12);

            if (pedazo == Convert.ToString(DateTime.Today.Day + "/" + DateTime.Today.Month + "/" + DateTime.Today.Year))

            {

                CMD.SelectionStart = x;

                CMD.SelectionLength = xx - x + 1;

                CMD.SelectionColor = System.Drawing.Color.OrangeRed;

            }

            else

            {

                CMD.SelectionStart = x;

                CMD.SelectionLength = xx - x + 1;

                CMD.SelectionColor = System.Drawing.Color.DarkKhaki;

            }

            CMD.SelectionStart = CMD.TextLength;


            CMD.ScrollToCaret();

            if (xx + 1 > lent) { break; }

            else { x = xx + 1; } 

        }

        else { x = x + 1; }

    }

    while (x <= lent - 1);

}

程序搜索■和=,其中如果日期相同则以深卡其色突出显示,如果不同则以橙红色突出显示。


在第一次运行中,它运行良好,但是当我添加更多文本并再次调用该函数时,它会以白色突出显示除最后一条消息之外的所有内容。


编辑:我尝试不保存xk int 变量,但是当我调用此函数时,程序需要再次处理所有文本并开始闪烁,直到检查所有文本。


翻翻过去那场雪
浏览 56回答 1
1回答

交互式爱情

在调用此函数之前,另一个函数会在 RTB 中写入如下内容:void PrintRTB(string a){  RTB.text += "■ " +  a + "\n";  ChequearDatos();}现在我使用命令 [.appendtext] 并且可以工作!void PrintRTB(string a){  RTB.AppendText("■ " + a + "\n");  ChequearDatos();}
打开App,查看更多内容
随时随地看视频慕课网APP