- A+
所属分类:vb.net
想自己做一个简单的代码编辑器,用的到高亮着色,但是着色简单,就是用光标选中关键字在修改颜色,利用 Select属性选择,SelectionColor属性设置颜色 ,如
RichTextBox1.Select(开始位置, 结束位置)
RichTextBox1.SelectionColor = 颜色
复制
但是默认是选中的时候光标会快速闪烁一下,很不美观。
经过网上搜索大家都说user32.dll里面的函数可以解决这个缺点。网上大多数都是复制来复制去的,还是C#代码,vb.net测试了一下无法达到效果。
经过无数次的测试折腾,vb.net调用dll文件 如下代码
在Public Class Form1下面加上如下winds下user32.dll引用代码,直接调用里面的隐藏光标函数,把着色任务完成后,在恢复光标显示属性。
Declare Function LockWindowUpdate Lib "user32" (ByVal hWnd As IntPtr) As Boolean '鼠标闪烁
复制
上面已经引用 user32.dll了,所以说使用的时候直接调用,举例如下
LockWindowUpdate(Me.Handle) '光标隐藏显示
RichTextBox1.Select(关键字开始位置, 关键字结束位置)
RichTextBox1.SelectionColor = 颜色
RichTextBox1.Select(鼠标着色之前的位置, 0) '恢复鼠标位置
LockWindowUpdate(New System.IntPtr(0)) '鼠标恢复显示
复制
反正我测试过了,很好的效果。一点也不闪烁。