RichTextBox1 и автопрокрутка

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Res5
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 07.09.2013 (Сб) 3:11

RichTextBox1 и автопрокрутка

Сообщение Res5 » 01.02.2014 (Сб) 17:43

При добавлении текста скролл спускается до низу. Как отключить автоскроллинг, а при условии что скролл пользователем спущен до низу снова включить?(RichTextBox1.Multiline = True , RichTextBox1.AppendText(vbNewLine & "MyText")

Res5
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 07.09.2013 (Сб) 3:11

Re: RichTextBox1 и автопрокрутка

Сообщение Res5 » 05.02.2014 (Ср) 3:27

Может существует способ отключить автоскроллинг? Пока реализовал так, но работает не так как нужно и возникают проблемы с копирвоанием фрагментов:
Код: Выделить всё
                Dim Scrl As Integer = RichTextBox1.SelectionStart

                RichTextBox1.AppendText(vbNewLine & "MyText")

                RichTextBox1.SelectionStart = Scrl

                RichTextBox1.ScrollToCaret()

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: RichTextBox1 и автопрокрутка

Сообщение FireFenix » 06.02.2014 (Чт) 1:23

Использовать свойство Text - http://msdn.microsoft.com/ru-ru/library ... 10%29.aspx?

Если взять рефлектор и посмотреть, там такой код
Код: Выделить всё
Public Sub AppendText(ByVal [text] As String)
    If ([text].Length > 0) Then
        Dim num As Integer
        Dim num2 As Integer
        Me.GetSelectionStartAndLength(num, num2)
        Try
            Dim endPosition As Integer = Me.GetEndPosition
            Me.SelectInternal(endPosition, endPosition, endPosition)
            Me.SelectedText = [text]
        Finally
            If ((MyBase.Width = 0) OrElse (MyBase.Height = 0)) Then
                Me.Select(num, num2)
            End If
        End Try
    End If
End Sub

Думаю при большом желании можно переопределить или написать свой метод
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Res5
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 07.09.2013 (Сб) 3:11

Re: RichTextBox1 и автопрокрутка

Сообщение Res5 » 06.02.2014 (Чт) 16:10

После очень долгих копаний я нашел 2 апи функции.
Код: Выделить всё
    Public Declare Function GetScrollPos Lib "user32.dll" (ByVal hWnd As Integer, ByVal nBar As Integer) As Integer
    Public Declare Function SetScrollPos Lib "user32.dll" (ByVal hWnd As Integer, ByVal nBar As Integer, ByVal nPos As Integer, ByVal bRedraw As Boolean) As Integer


Делаю теперь так:
Код: Выделить всё
                Dim Scrl As Integer = GetScrollPos(RichTextBox1.Handle, 1)

                RichTextBox1.AppendText(vbNewLine & "MyText")

                SetScrollPos(RichTextBox1.Handle, 1, Scrl, True) 


Скролл то стоит на месте, а текст всеравно прокручивается автоматом.

Res5
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 07.09.2013 (Сб) 3:11

Re: RichTextBox1 и автопрокрутка

Сообщение Res5 » 12.02.2014 (Ср) 2:41

Хм. А как пререопределить метод ? (юзаю Microsoft Visual Studio 2008)

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: RichTextBox1 и автопрокрутка

Сообщение FireFenix » 13.02.2014 (Чт) 1:30

Res5 писал(а):Делаю теперь так

Черезжопное программирование это

Res5 писал(а):юзаю Microsoft Visual Studio 2008

Не зависит от студии.

Res5 писал(а):Хм. А как пререопределить метод ?

Отнаследоваться и обьявить функцию с override/shadows - http://msdn.microsoft.com/en-us/library/c4swkw24.aspx
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Res5
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 07.09.2013 (Сб) 3:11

Re: RichTextBox1 и автопрокрутка

Сообщение Res5 » 24.02.2014 (Пн) 11:16

Можно простой пример? Я так и не понял как получать код события элемента управления и его дополнять/изменять.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList