如何解决您好,我正在尝试使用 Visual Studio 使用 VB.Net 制作类似于记事本的东西
我有两个richtextbox,richtextbox2 是我写文本的地方,richtextbox1 是行号。我希望我的行号始终与richtextbox2 的行同步。但我面临的问题是,每次我输入文本时,richtextbox1 中的滚动条都会滚动到顶部(如果感觉我输入了错误的行号)。如何阻止这种情况发生,以便每次在richtextbox2 中滚动或键入文本时,richtextbox1 始终指向正确的行号。
我假设我必须在更改文本时在richtextbox1 和richtextbox1.focus() 中将隐藏选择设置为false。请帮我解决这个问题。
以下是我的代码:
Const WM_USER As Integer = &H400
Const EM_GETSCROLLPOS As Integer = WM_USER + 221
Const EM_SETSCROLLPOS As Integer = WM_USER + 222
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageW" (ByVal hWnd As IntPtr,ByVal msg As Integer,ByVal wParam As Integer,ByRef lParam As Point) As Integer
Private Sub RTB2_VScroll(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles RichTextBox2.VScroll,RichTextBox1.VScroll
Dim pt As Point = New Point
SendMessage(RichTextBox2.Handle,EM_GETSCROLLPOS,pt)
SendMessage(RichTextBox1.Handle,EM_SETSCROLLPOS,pt)
End Sub
Private Sub RichTextBox2_TextChanged(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles RichTextBox2.TextChanged
'Dim pt1 As Point = New Point
'SendMessage(RichTextBox2.Handle,pt1)
'SendMessage(RichTextBox1.Handle,pt1)
RichTextBox1.Focus()
Dim maxlc As Integer = 1
Dim prevline As Integer = 1
Dim linecount As Integer = RichTextBox2.GetLineFromCharIndex(RichTextBox2.TextLength) + 1
If prevline <> linecount Then
If linecount <> maxlc Then
RichTextBox1.Clear()
For i = 0 To linecount - 1 Step 1
RichTextBox1.AppendText(Convert.ToString(i) + vbNewLine)
Next i
maxlc = linecount
prevline = linecount
End If
End If
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。