C#高亮关键字

本文基于[博客园-智慧掩盖真相]的一篇文章写的
http://www.cnblogs.com/birdshover/archive/2007/01/30/635230.html

试着简单做一下,貌似正则表达式通不过,后面修改了下.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;/* 正则表达式引用 */

namespace Keyword
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        #region =★=*=*=★= 键盘击键事件 =★=*=*=★=
        private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {

        }

        private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
        {
            //if (e.KeyData == Keys.Enter) { }
            KeyDownUp(sender, e);
        }

        private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
        {
            //richTextBox1.Text = e.KeyData.ToString();
            //richTextBox1.Text = e.KeyValue.ToString();
            //KeyDownUp(sender, e);
        }

        /// <summary> 自定义 按下空格键事件 </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void KeyDownUp(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Space)/* 判断是否为空格 */
            {
                RichTextBox rich = (RichTextBox)sender;
                string s = GetLastWord(rich.Text, rich.SelectionStart);

                if (AllClass().IndexOf(s) > -1)
                {
                    MySelect(rich, rich.SelectionStart, s, Color.Blue, true);
                }
            }
        }
        #endregion

        private void Form1_Load(object sender, EventArgs e)
        {
            //richTextBox1.KeyDown += new KeyEventHandler(rich_KeyDown);   //这一行添加到Form1_Load中

            richTextBox1.SelectionFont = new Font("宋体", 12, (FontStyle.Regular));
            richTextBox1.Text = "public private static void true false string Regex RegexOptions new Get if else return\r"
                +"以上字符是加载字符.\r";
            richTextBox1.Select(richTextBox1.Text.Length, 0);
        }
        //void rich_KeyDown(object sender, KeyEventArgs e)
        //{
        //    //if (e.KeyData == Keys.Enter) { }


        //    RichTextBox rich = (RichTextBox)sender;
        //    string s = GetLastWord(rich.Text, rich.SelectionStart);

        //    if (AllClass().IndexOf(s) > -1)
        //    {
        //        MySelect(rich, rich.SelectionStart, s, Color.Blue, true);
        //    }
        //}


        /// <summary> 建立关键字 </summary>
        /// <returns></returns>
        public static List<string> AllClass()
        {
            List<string> list = new List<string>();
            list.Add("string");
            list.Add("public");
            list.Add("new");
            list.Add("int");
            list.Add("static");
            list.Add("Get");
            list.Add("RegexOptions");
            list.Add("Regex");
            list.Add("if");
            list.Add("else");
            list.Add("return");
            list.Add("void");
            list.Add("private");
            list.Add("true");
            list.Add("false");
            list.Add("");
            list.Add("");

            return list;
        }

        public static string GetLastWord(string str, int i)
        {
            string x = str;
            Regex reg = new Regex(@"[aA-zZ]+$", RegexOptions.RightToLeft);
            x = reg.Match(x).Value;

            Regex reg2 = new Regex(@"\s");
            x = reg2.Replace(x, "");

            return x;
        }


        public static void MySelect(System.Windows.Forms.RichTextBox tb, int i, string s, Color c, bool font)
        {
            tb.Select(i - s.Length, s.Length);
            tb.SelectionColor = c;

            if (font)
            {
                tb.SelectionFont = new Font("宋体", 12, (FontStyle.Bold));
            }
            //else
            //    tb.SelectionFont = new Font("宋体", 12, (FontStyle.Regular));

            //以下是把光标放到原来位置,并把光标后输入的文字重置
            tb.Select(i, 0);
            tb.SelectionFont = new Font("宋体", 12, (FontStyle.Regular));
            tb.SelectionColor = Color.Black;
        }
    }
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值