簡體   English   中英

RichTextBox正則表達式錯誤

[英]RichTextBox Regex Error

我正在嘗試使用正則RegexRichTextBox 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM