Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Переместите курсор в конец текстового поля / richtextbox

Автор вопроса: user2900109Ответов: 3

Я создаю приложение для автоматического набора текста. как это работает: • Щелкните по загрузке текстового файла (файл будет загружен в richtextbox2) • Нажмите Start: (Таймер начнет вводить код в richtextbox1 из richtextbox2) • Но здесь я застрял с проблемой:

(Я уже использовал следующий код, но у меня не работает) использовал код:

RichTextBox1.SelectionStart = RichTextBox1.TextLength
RichTextBox1.ScrollToCaret()

Но значение таймера равно 100, и он работает с кодом count_: Таким образом, полоса прокрутки непрерывно перемещается ▲ ▼ ▲ ▼ ▲ ▼ (вверх, вниз, вверх вниз, ...), если я удалил этот код: тогда полоса прокрутки не опускается автоматически. Если это сделано вручную, я попадаю в первую строку, 1-е слово автоматически, если таймер работает ...

Так что, пожалуйста, помогите мне, что я могу сделать

  • Взгляните на это: stackoverflow.com/questions/7518876/ Jerry 20.10.2013

scrollbarcursorrichtextboxtextbox

Ответы

Ответ 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

Ответ 2 · рейтинг 2 · user3827507

Добавьте к себе следующий код

RichTextBox1.HideSelection = False

Ответ 3 · рейтинг 1 · Andrea Savojardo

Когда вы устанавливаете для свойства RichTextBox "Скрыть выделение" значение False в конструкторе, И используйте "AppendText" , RichTextBox будет автоматически прокручиваться до нижней строки при добавлении.

rtblog. AppendText (dbcon.insertdata & Chr (13))

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы