コード例 #1
0
        }         //EditHtmlForm

        private void InitializeSyntaxHighlighting()
        {
            // Match Visual Studio as far as possible
            _syntaxPatterns = new List <HtmlSyntaxPattern>();
            _reOLE          = new RichOLE(this.htmlText);

            // Tags within but excluding angled brackets
            {
                var tags = @"[a-zA-Z][a-zA-Z0-9]*";
                var withinAngledBrackets = @"(?<=</?)({0})(?=[/?>| ])";

                AddSyntaxPattern(string.Format(withinAngledBrackets, tags), Color.DarkRed);
            }

            // Attributes within tags
            {
                var attribs    = @"([a-zA-Z][a-zA-Z0-9]*)";
                var withinTags = @"(?<=<[^>]+\s)({0})(?=[\s=>])";

                AddSyntaxPattern(string.Format(withinTags, attribs), Color.Red);
            }

            // Attribute values
            {
                var besideAttrib = @"(?<=<([^>]+))({0})(?=[>/ ])";

                // Unquoted values
                var values = @"(=\s*.+?)";
                AddSyntaxPattern(string.Format(besideAttrib, values), Color.Blue);

                // Double quoted values
                values = @"\""([^""]|\""\"")*\""";
                AddSyntaxPattern(string.Format(besideAttrib, values), Color.Blue);
            }

            // Angled brackets
            AddSyntaxPattern(@"</?", Color.Blue);
            AddSyntaxPattern(@"/?>", Color.Blue);

            // Comments kept separate to overwrite any other (custom) formatting
            _commentsPattern = new HtmlSyntaxPattern(@"(<!--.*?-->)|(<!--.*)", RegexOptions.Singleline, Color.Green, Color.Transparent, FontStyle.Regular);

            // Change handling
            _changeTimer          = new Timer();
            _changeTimer.Tick    += new EventHandler(OnChangeTimer);
            _changeTimer.Interval = 500;
            _changeTimer.Start();

            this.htmlText.TextChanged += new System.EventHandler(this.OnTextChanged);
        }
コード例 #2
0
        private void HightlightPattern(HtmlSyntaxPattern syntax)
        {
            MatchCollection matches = syntax.Pattern.Matches(htmlText.Text);

            foreach (Match match in matches)
            {
                htmlText.SelectionStart     = match.Index;
                htmlText.SelectionLength    = match.Length;
                htmlText.SelectionColor     = syntax.TextColor;
                htmlText.SelectionBackColor = syntax.BackColor;

                if (syntax.Style == FontStyle.Regular)
                {
                    htmlText.SelectionFont = htmlText.Font;
                }
                else
                {
                    htmlText.SelectionFont = new Font(htmlText.Font, syntax.Style);
                }
            }
        }