Язык Visual Basic на платформе .NET.
Модераторы: Ramzes, Sebas
-
Res5
-
- Обычный пользователь
-
-
- Сообщения: 72
- Зарегистрирован: 07.09.2013 (Сб) 3:11
Res5 » 01.02.2014 (Сб) 17:43
При добавлении текста скролл спускается до низу. Как отключить автоскроллинг, а при условии что скролл пользователем спущен до низу снова включить?(RichTextBox1.Multiline = True , RichTextBox1.AppendText(vbNewLine & "MyText")
-
Res5
-
- Обычный пользователь
-
-
- Сообщения: 72
- Зарегистрирован: 07.09.2013 (Сб) 3:11
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
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
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
Res5 » 12.02.2014 (Ср) 2:41
Хм. А как пререопределить метод ? (юзаю Microsoft Visual Studio 2008)
-
FireFenix
-
- Продвинутый гуру
-
-
- Сообщения: 1640
- Зарегистрирован: 25.05.2007 (Пт) 10:24
- Откуда: Mugen no Sora
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
Res5 » 24.02.2014 (Пн) 11:16
Можно простой пример? Я так и не понял как получать код события элемента управления и его дополнять/изменять.
Вернуться в Visual Basic .NET
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40