Этот вопрос о расширенном контроле: FastColoredTextbox здесь: http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlightingFastColoredTextbox вопрос прокрутка текста и позиционирование каретки
Я пытаюсь автоматической прокрутка вниз текст и поместить текстовый курсор в последнем символе прилагаемый текст (общая длина текстового свойства, я полагаю).
проблема Текст скроллинг
Это работает для автоматической прокрутки текста:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FastColoredTextBox1.Text = str
FastColoredTextBox1.ScrollLeft()
FastColoredTextBox1.Navigate(FastColoredTextBox1.Lines.Count - 1)
End Sub
... Но я хочу, чтобы сделать его более общий характер, и это не работает:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FastColoredTextBox1.Text = str
End Sub
Private Sub FastColoredTextBox1_TextChanged(sender As Object, e As FastColoredTextBoxNS.TextChangedEventArgs) Handles FastColoredTextBox1.TextChanged
sender.ScrollLeft()
sender.Navigate(FastColoredTextBox1.Lines.Count - 1)
End Sub
Любая ошибка или исключение, просто не сработает, текст не прокручивается, как в первый пример.
проблема клавиатуры положение курсора
О текстовом курсоре, я попытался это, но не работают слишком:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FastColoredTextBox1.Text = str
FastColoredTextBox1.SelectionStart = FastColoredTextBox1.Text.Length
End Sub
Любая ошибка или исключение, просто не Работа.
UPDATE
Пробовал решение @ebyrob, но не работает, он не прокручивается вниз.
Imports FastColoredTextBoxNS
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim str As String = String.Empty
For x As Int32 = 1 To 1000 : str += vbNewLine & x : Next
FastColoredTextBox1.Text = str
End Sub
Private Sub FastColoredTextBox1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles FastColoredTextBox1.TextChanged
GoEnd()
End Sub
Public Sub GoEnd()
If FastColoredTextBox1.Lines.Count > 0 Then
FastColoredTextBox1.Selection.Start = New Place(FastColoredTextBox1.Lines(FastColoredTextBox1.Lines.Count - 1).Count, FastColoredTextBox1.Lines.Count - 1)
Else
FastColoredTextBox1.Selection.Start = New Place(0, 0)
End If
FastColoredTextBox1.DoCaretVisible()
End Sub
End Class
Update Два
Код @ebyrob работает только тогда, когда я называю "GoEnd" всегда после добавления текста, как в этом примере:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim str As String = String.Empty
For x As Int32 = 1 To 1000 : str += vbNewLine & x : Next
FastColoredTextBox1.Text = str
GoEnd()
End Sub
Это то же самое проблема моей первой проблемы, которую я прокомментировал (событие TextChanged работает не так, как ожидалось), мне нужно сделать его эффективным и универсальным, я предположил, что событие TextChanged Control будет правильное событие, чтобы поставить «GoEnd()», но definitivelly - нет.
Я не хочу, чтобы это когда-либо:
1. Add text
2. Call GoEnd
3. Add more text
4. Call again GoEnd
Я wan't поставить «GoEnd» в событии, которое succed, когда текст изменен, чтобы упростить вещи:
1. add text
2. add more text
UPDATE ТРИ
Все проблемы будут решены, только изменили название события:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim mytext As String = String.Empty
For x As Int32 = 1 To 1000 : mytext += vbNewLine & x : Next
FastColoredTextBox1.Text += mytext
FastColoredTextBox1.Focus()
End Sub
Private Sub FastColoredTextBox1_TextChanged(sender As Object, e As FastColoredTextBoxNS.TextChangedEventArgs) _
Handles FastColoredTextBox1.TextChangedDelayed
sender.ScrollLeft()
sender.Navigate(sender.Lines.Count - 1)
FastColoredTextBox1.SelectionStart = FastColoredTextBox1.Text.Length
End Sub
End Class
Мне сложно понять, что именно ваш вопрос и что вы пытаетесь достичь ... можете ли вы подробнее рассказать? –
Что вы подразумеваете под «не работает»? Это просто ошибка компиляции из-за того, что вы не отправили отправителя FastColoredTextBox? Также не должен быть последним примером '.SelectionStart = FastColoredTextBox1.Text.Length - 1'? –
Вам нужно будет отбросить этот объект 'sender'. Вам нужно документировать, что такое компонент FastColoredTextBox. – LarsTech