本文基于[博客园-智慧掩盖真相]的一篇文章写的
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;
}
}
}