[英]When adding more text into a RichTextBox and highlighting, it clears all previous highlights
我正在制作一個調試/日志表單,該表單將在特定時間保存其他表單中完成的所有工作:例如按下按鈕,在文本框中輸入一些信息等。
在每一行中,我突出顯示與當天相對應的實際時間,例如,今天是10/08/2019,因此:
10/08/2019與實際日期相對應,因此已突出顯示。 問題是當我做其他事情,例如按L按鈕時,它顯示如下:
下面,我將其解釋為以下代碼: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);
}
程序將搜索■和=,如果日期相同,則將其內部用DarkKhaki顏色突出顯示;如果不是同一日期,則將使用OrangeRed顏色突出顯示。
在第一次運行中,它運行良好,但是當我添加更多文本並再次調用該函數時,除最后一條消息外,所有內容均以白色突出顯示。
編輯:我嘗試過不保存xk int變量,但是當我調用此函數時,程序需要再次處理所有文本,並開始閃爍直到選中所有文本。
我像@TnTinMin所說的那樣固定了它,在我調用此函數之前,另一個函數在RTB中寫入如下:
void PrintRTB(string a)
{
RTB.text += "■ " + a + "\n";
ChequearDatos();
}
現在,我使用命令[.appendtext]可以工作了!
void PrintRTB(string a)
{
RTB.AppendText("■ " + a + "\n");
ChequearDatos();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.