RichTextBox vb.net 关键词高亮
发布时间:2020-12-17 08:10:39 所属栏目:百科 来源:网络整理
导读:Imports HWND = System.IntPtr Public Class Form_Rules Private Const WM_SETREDRAW As Integer = HB Private Shared Function SendMessage(ByVal hwnd As HWND,ByVal wMsg As Integer,ByVal wParam As Integer,ByVal lParam As IntPtr) As Integer End Func
Imports HWND = System.IntPtr
Public Class Form_Rules Private Const WM_SETREDRAW As Integer = &HB Private Shared Function SendMessage(ByVal hwnd As HWND,ByVal wMsg As Integer,ByVal wParam As Integer,ByVal lParam As IntPtr) As Integer End Function Dim index As Integer = 0 Private Sub Form_Rules_Load(sender As System.Object,e As System.EventArgs) Handles MyBase.Load RichTextBox.WordWrap = False End Sub Private Sub RichTextBox_TextChanged(sender As System.Object,e As System.EventArgs) Handles RichTextBox.TextChanged SendMessage(RichTextBox.Handle,WM_SETREDRAW,IntPtr.Zero) RichTextBox.SelectAll() RichTextBox.SelectionColor = Color.Black Dim keystr As String = "and,end,if,then,or,else,+,true,false" For i = 0 To UBound(keystr.Split(",")) - 1 Call GetKey(keystr.Split(",")(i),RichTextBox.Text) RichTextBox.Select(index,0) RichTextBox.SelectionColor = Color.Black Next SendMessage(RichTextBox.Handle,1,IntPtr.Zero) ' RichTextBox.Refresh() End Sub Public Function GetKey(ByVal P As String,ByVal S As String) As Integer Dim CNT As Integer = 0 Dim M As Integer = P.Length Dim N As Integer = S.Length Dim SS As Char() = S.ToCharArray() Dim PP As Char() = P.ToCharArray() If M > N Then Return 0 For I = 0 To N - M + 1 Dim J As Integer = 0 For J = 0 To M Try If SS(I + J) <> PP(J) Then Exit For End If Catch ex As Exception End Try If J = P.Length Then RichTextBox.Select(I,P.Length) RichTextBox.SelectionColor = Color.Red CNT = CNT + 1 End If Next Next Return CNT End Function End Class
防止闪烁: Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As IntPtr) As IntPtr LockWindowUpdate(RichTextBox.Handle) LockWindowUpdate(0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |