Q:

How can I make a "Find Form" for RichTextBox while keeping SelectionColor?  C#

I am making a Notepad with Syntax highlighting. 
I made the Syntax-Highlighting work, but now I need help :D
I need a "Find Form" that works with this code:
            // getting keywords/functions
            string keywords = @"\b(abstract|as|base|break|case|catch|checked|continue|default|delegate|do|else|event|explicit|extern|false|finally|fixed|for|foreach|goto|if|implicit|in|interface|internal|is|lock|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sealed|sizeof|stackalloc|switch|this|throw|true|try|typeof|unchecked|unsafe|using|virtual|volatile|while)\b";
            MatchCollection keywordMatches = Regex. Matches(codeRichTextBox. Text, keywords);

            string purplewords = @"\b(bool|byte|char|class|const|decimal|double|enum|float|int|long|sbyte|short|static|string|struct|uint|ulong|ushort|static|void)\b";
            MatchCollection purplewordsMatches = Regex. Matches(codeRichTextBox. Text, purplewords);

            // getting types/classes from the text 
            string types = @"\b(Console)\b";
            MatchCollection typeMatches = Regex. Matches(codeRichTextBox. Text, types);

            // getting comments (inline or multiline)
            string comments = @"(\/\/.+?$|\/\*.+?\*\/)";
            MatchCollection commentMatches = Regex. Matches(codeRichTextBox. Text, comments, RegexOptions. Multiline);

            // getting strings
            string strings = "\".+?\"";
            MatchCollection stringMatches = Regex. Matches(codeRichTextBox. Text, strings);

            // saving the original caret position + forecolor
            int originalIndex = codeRichTextBox. SelectionStart;
            int originalLength = codeRichTextBox. SelectionLength;
            Color originalColor = Color. Black;

            // MANDATORY - focuses a label before highlighting (avoids blinking)
            menuStrip1.Focus();

            // removes any previous highlighting (so modified words won't remain highlighted)
            codeRichTextBox. SelectionStart = 0;
            codeRichTextBox. SelectionLength = codeRichTextBox. Text. Length;
            codeRichTextBox. SelectionColor = originalColor;

            // scanning...
            foreach (Match m in keywordMatches)
            {
                codeRichTextBox. SelectionStart = m.Index;
                codeRichTextBox. SelectionLength = m.Length;
                codeRichTextBox. SelectionColor = Color. Blue;
            }

            foreach (Match m in purplewordsMatches)
            {
                codeRichTextBox. SelectionStart = m.Index;
                codeRichTextBox. SelectionLength = m.Length;
                codeRichTextBox. SelectionColor = Color. Purple;
            }

            foreach (Match m in typeMatches)
            {
                codeRichTextBox. SelectionStart = m.Index;
                codeRichTextBox. SelectionLength = m.Length;
                codeRichTextBox. SelectionColor = Color. DarkCyan;
            }

            foreach (Match m in commentMatches)
            {
                codeRichTextBox. SelectionStart = m.Index;
                codeRichTextBox. SelectionLength = m.Length;
                codeRichTextBox. SelectionColor = Color. Green;
            }

            foreach (Match m in stringMatches)
            {
                codeRichTextBox. SelectionStart = m.Index;
                codeRichTextBox. SelectionLength = m.Length;
                codeRichTextBox. SelectionColor = Color. Brown;
            }

            // restoring the original colors, for further writing
            codeRichTextBox. SelectionStart = originalIndex;
            codeRichTextBox. SelectionLength = originalLength;
            codeRichTextBox. SelectionColor = originalColor;

            // giving back the focus
            codeRichTextBox. Focus();

That is Full C# highlighting.  I need it to work with a "Find Form", like in Notepad++ :)

My current "Find Form" code:
    public static void Find(RichTextBox rtb, String word, Color color)
    {
        rtb. SelectionStart = 0;
        rtb. SelectionLength = rtb. TextLength;
        rtb. SelectionBackColor = Color. White;
        if (word == "")
        {
            return;
        }
        int s_start = rtb. SelectionStart, startIndex = 0, index;
        while ((index = rtb. Text. IndexOf(word, startIndex)) ! = -1)
        {
            rtb. Select(index, word. Length);
            rtb. SelectionBackColor = color;
            startIndex = index + word. Length;
        }
    }

It works fine(Without Syntax), but if I have Syntax switched ON, it glitches out :(
I can provide more info if needed :)
P.S: I know I made a question for a "Find Form" before, but this is a different type of question :)

A:

So if you decide to go with Scintilla. NET then you want to install the nuget package direct from visual studio (https://docs.microsoft.com/en-us/nuget/quickstart/install-and-use-a-package-in-visual-studio).   You can then create a new one by doing using ScintillaNET; and new Scintilla(). 
I have used it in my codebase (C#) here https://github.com/HicServices/RDMP/blob/f85f1c7f03bc0cdcbabe7ef83d12fa1f4d25bdae/Reusable/ReusableUIComponents/ScintillaHelper/ScintillaTextEditorFactory.cs
Heres an excerpt
            var toReturn =  new Scintilla();
            toReturn. Dock = DockStyle. Fill;
            toReturn. HScrollBar = true;
            toReturn. VScrollBar = true;

            if (lineNumbers)
                toReturn. Margins[0].Width = 40; //allows display of line numbers
            else
                foreach (var margin in toReturn. Margins)
                    margin. Width = 0;

            toReturn. ClearCmdKey(Keys. Control | Keys. S); //prevent Ctrl+S displaying ascii code
            toReturn. ClearCmdKey(Keys. Control | Keys. R); //prevent Ctrl+R displaying ascii code
            toReturn. ClearCmdKey(Keys. Control | Keys. W); //prevent Ctrl+W displaying ascii code

Once it is showing you can view the documentation on automatic code highlighting here https://github.com/jacobslusser/ScintillaNET/wiki/Custom-Syntax-Highlighting

