[英]RichTextBox Regex Error
我正在嘗試使用正則Regex
在RichTextBox
RTB中突出顯示數字,並且工作正常,除非當我按將插入符位置移動到我所在的位置上方時,它會選擇下面的內容,並且當我鍵入內容時,它會消失,除非我不斷按下左鍵,這確實是一件令人討厭的事情。
碼:
MyRegex.cs
namespace REGEX_MY
{
public class REGEX_CLASS
{
public static RichTextBox HIGHLIGHT(RichTextBox RTB, int StartPos)
{
Regex Red = new Regex("1|2|3|4|5|6|7|8|9|0");
RTB.SelectAll();
RTB.SelectionColor = Color.White;
RTB.Select(RTB.Text.Length, 1);
foreach (Match Match in Red.Matches(RTB.Text))
{
RTB.Select(Match.Index, Match.Length);
RTB.SelectionColor = Color.Blue;
RTB.SelectionStart = StartPos;
RTB.SelectionColor = Color.White;
}
return RTB;
}
}
}
MyForm.cs
public void DoIt()
{
RTB = REGEX_MY.REGEX_CLASS.HIGHLIGHT(RTB, RTB.SelectionStart);
}
謝謝 :)
foreach
語句中的RTB.Select(Match.Index, Match.Length)
在匹配的數字上跳過1個長度的選擇。 完成后,它會將選擇內容保留在最后一個匹配的數字上,並且當您按任意鍵時,選擇內容不會消失,但光標會向前移動,因此下一個字符將被覆蓋。
解決方案是在foreach
語句完成后立即將光標帶回到沒有選擇范圍的起始位置,例如RTB.Select(StartPos, 0)
foreach (Match Match in Red.Matches(RTB.Text))
{
RTB.Select(Match.Index, Match.Length);
RTB.SelectionColor = Color.Blue;
RTB.SelectionStart = StartPos;
RTB.SelectionColor = Color.White;
}
RTB.Select(StartPos, 0);
return RTB;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.