RichTextBox vb.net 关键词高亮

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, 0, 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, WM_SETREDRAW, 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值