相关代码如下:
using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace HighLight
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void HighLightText()
{
string[] keywords = {"select","distinct","from","where","order","by","group","null"};
string[] functions = { "isnull", "count", "sum" };
string[] strings = { @"'((.|\n)*?)'" };
string[] whiteSpace = { "\t", "\n", " " };
rtbSql.SelectAll();
rtbSql.SelectionColor = Color.Black;
HighLightText(keywords, Color.Blue);
HighLightText(functions, Color.Magenta);
HighLightText(strings, Color.Red);
HighLightText(whiteSpace, Color.Black);
}
private void HighLightText(string[] wordList, Color color)
{
foreach (string word in wordList)
{
Regex r = new Regex(word, RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(rtbSql.Text))
{
rtbSql.Select(m.Index, m.Length);
rtbSql.SelectionColor = color;
}
}
}
private void btnHighLight_Click(object sender, EventArgs e)
{
HighLightText();
}
}
}
若要实现更复杂的功能,可以研究一下这个C#的IDE编辑器的代码。
http://www.icsharpcode.net/OpenSource/SD/Default.aspx
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace HighLight
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void HighLightText()
{
string[] keywords = {"select","distinct","from","where","order","by","group","null"};
string[] functions = { "isnull", "count", "sum" };
string[] strings = { @"'((.|\n)*?)'" };
string[] whiteSpace = { "\t", "\n", " " };
rtbSql.SelectAll();
rtbSql.SelectionColor = Color.Black;
HighLightText(keywords, Color.Blue);
HighLightText(functions, Color.Magenta);
HighLightText(strings, Color.Red);
HighLightText(whiteSpace, Color.Black);
}
private void HighLightText(string[] wordList, Color color)
{
foreach (string word in wordList)
{
Regex r = new Regex(word, RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(rtbSql.Text))
{
rtbSql.Select(m.Index, m.Length);
rtbSql.SelectionColor = color;
}
}
}
private void btnHighLight_Click(object sender, EventArgs e)
{
HighLightText();
}
}
}
完整源码下载