Я создаю приложение для автоматического набора текста. как это работает: • Щелкните по загрузке текстового файла (файл будет загружен в richtextbox2) • Нажмите Start: (Таймер начнет вводить код в richtextbox1 из richtextbox2) • Но здесь я застрял с проблемой:
(Я уже использовал следующий код, но у меня не работает) использовал код:
RichTextBox1.SelectionStart = RichTextBox1.TextLength
RichTextBox1.ScrollToCaret()
Но значение таймера равно 100, и он работает с кодом count_: Таким образом, полоса прокрутки непрерывно перемещается ▲ ▼ ▲ ▼ ▲ ▼ (вверх, вниз, вверх вниз, ...), если я удалил этот код: тогда полоса прокрутки не опускается автоматически. Если это сделано вручную, я попадаю в первую строку, 1-е слово автоматически, если таймер работает ...
Так что, пожалуйста, помогите мне, что я могу сделать
Ответ 1 · рейтинг 1 · ElektroStudios
Чтобы предотвратить эффект отскока RichTextbox ▲ ▼, когда вертикальная черта внизу, вы можете вставить класс ниже в свой проект и использовать его следующим образом:
RichTextBox1.Select(RichTextBox1.TextLength - 1, 1)
If Not ScrollBarInfo.IsAtBottom(RichTextBox1) Then
RichTextBox1.ScrollToCaret()
End If
Это моя измененная версия из кода, представленного здесь: Как узнать, достигла ли вертикальная полоса прокрутки RichTextBox максимального значения? @ King King
#Region " Scrollbar Info "
Public Class ScrollBarInfo
<System.Runtime.InteropServices.DllImport("user32")> _
Private Shared Function GetScrollInfo(hwnd As IntPtr, nBar As Integer, ByRef scrollInfo As SCROLLINFO) As Integer
End Function
Private Shared scrollInf As New SCROLLINFO
Private Structure SCROLLINFO
Public cbSize As Integer
Public fMask As Integer
Public min As Integer
Public max As Integer
Public nPage As Integer
Public nPos As Integer
Public nTrackPos As Integer
End Structure
Private Shared Sub Get_ScrollInfo(control As Control)
scrollInf = New SCROLLINFO()
scrollInf.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(scrollInf)
scrollInf.fMask = &H10 Or &H1 Or &H2 'SIF_RANGE = &H1, SIF_PAGE= &H2, SIF_TRACKPOS = &H10
GetScrollInfo(control.Handle, 1, scrollInf)
End Sub
' IsAtBottom
Public Shared Function IsAtBottom(control As Control) As Boolean
Get_ScrollInfo(control)
Return scrollInf.max = (scrollInf.nTrackPos + scrollInf.nPage) - 1
End Function
' IsAtTop
Public Shared Function IsAtTop(control As Control) As Boolean
Get_ScrollInfo(control)
Return scrollInf.nTrackPos = 0
End Function
' ReachedBottom
Public Shared Function ReachedBottom(control As Control) As Boolean
Get_ScrollInfo(control)
Return scrollInf.max = scrollInf.nTrackPos + scrollInf.nPage
End Function
' ReachedTop
Public Shared Function ReachedTop(control As Control) As Boolean
Get_ScrollInfo(control)
Return scrollInf.nTrackPos < 0
End Function
End Class
#End Region
Ответ 3 · рейтинг 1 · Andrea Savojardo
Когда вы устанавливаете для свойства RichTextBox "Скрыть выделение" значение False в конструкторе, И используйте "AppendText" , RichTextBox будет автоматически прокручиваться до нижней строки при добавлении.
rtblog. AppendText (dbcon.insertdata & Chr (13))