📄 richtextbox的find方法如何应用于中文.txt
字号:
你 这 段 程 序 对 于 英 文 文 本 是 正 确 的 , 对 中 文 则 是 错 误 的 。 我 在 “VB 5提示错误:"输入超出文件尾"”介 绍 了 VB是 如 何 处 理 中 文 字 符 串 的 。 对 于 RichTextBox, 它 的 Find、 SelLength都 是 按 照 一 个 汉 字 算 一 个 字 符 计 算 的 , 但 Find的 第 二 个 参 数 是 按 照 一 个 汉 字 算 两 个 字 符 计 算 的 , 这 样 的 处 理 方 法 导 致 你 的 程 序 无 法 应 用 于 中 文 。 下 面 是 正 确 的 程 序 , 其 中 SelS是 按 照 按 照 一 个 汉 字 算 两 个 字 符 计 算 , 而 SelS按 照 一 个 汉 字 算 一 个 字 符 计 算 。
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" ( _
ByVal lpString As String) As Long
Private Sub Command1_Click()
Dim I, SelS, SelC As Long
Dim StrLen, OldStrLen As Long
Dim TMPstr As String
SelS = 0
SelC = 0
Text1.Text = Chr(13) ''Text1 为 换 行 标 记
Dim FoundPos As Integer
Dim FoundLine As Integer
'查 找 TextBox 控 件 中 指 定 的 文 本 。
'SelS = 1
Do While FoundPos <> -1
FoundPos = RichTextBox1.Find(Text1.Text, SelS)
RichTextBox1.SelStart = SelC
If FoundPos <> -1 Then
RichTextBox1.SelLength = FoundPos - SelC
SelC = FoundPos
MsgBox "查 找 的 字 符 串 是 : " & RTrim(RichTextBox1.SelText)
Else
Exit Do
End If
SelS = SelS + lstrlen(RichTextBox1.SelText) + Len(Text1.Text)
Loop
End Sub
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -