2024年6月1日发(作者:)

C#开发高亮语法编辑器(一)——TextBox ,RichTextBox

C#简单实现高亮语法编辑器(一)

——TextBox ,RichTextBox的局限性

一、RichTextBox基本设置

二、实现语法高亮

三、关键字提示

四、实现行号

就简单快速得开发文本编辑器TextBox 最为简单,大家用得也多,缺点是无法实现复杂的操作。RichTextBox

虽然是则功能比它强大很多。

图 1.1 输入框控件关系

这里要实现以下功能的编辑器:

1、实现语法高亮;

2、关键字提示;

3、行号。

显然TextBox 无法完成我们的任务,虽然都派生自TextBoxBase,但就控制力而言RichTextBox比它优秀很

多。这里选用RichTextBox尝试开发。

注:以下只讨论简单开发,不考虑复杂的关键字查找机制。

一、RichTextBox基本设置

这里先建立一个工程,建立窗体Form1。

可以简单添加RichTextBox控件,可以在Form1_Load中建立。代码如下:

1 State = zed;

2

3 RichTextBox rich = new RichTextBox();

4 ine = true;

5 = - 100;

6 = - 100;

7 = 40;

8 = 40;

9 ap = true;

10 = "12345678";

11 Bars = Vertical;

12 (rich);

这样就建立了简单的RichTextBox,宽度和高度都设置了。没有做Form1窗体缩放的处理。

二、实现语法高亮

在RichTextBox里实现语法高亮还是非常简单的。可以使用

1 (0,1);

2 ionFont = new Font("宋体", 12, (r));

3 ionColor = ;

意思是,先选择第一个字母,按上面的设置,选择到了数字‘1’,然后设置这个字的字体大小,再设置字的颜色。

如果对关键字进行处理(这里只处理光标向后流动的情况)

首先添加输入事件

1 n += new KeyEventHandler(rich_KeyDown); //这一行添加到Form1_Load中

2

3 void rich_KeyDown(object sender, KeyEventArgs e)

4 {

5 //throw new Exception("The method or operation is not implemented.");

6 }

建立关键字

1 public static List AllClass()

2 {

3 List list = new List();

4 ("function");

5 ("return");

6 ("class");

7 ("new");

8 ("extends");

9 ("var");

10 return list;

11 }

当KeyDown事件发生时,向前查找

1 //返回搜索字符

2 public static string GetLastWord(string str,int i)