.NET 4.x Получить слово под курсором мыши в RichTextBox - Visual Basic .NET
Формулировка задачи:
Всем знатокам доброго времени суток!
Пытаюсь получить слово под курсором мыши. Если курсор установить на слово в середине текста, то тут небольшие проблемы - через InStr и InStrRev я их решаю. Но если поставить курсор на слово в начале текста, в начале предложения, в конце текста, в конце предложения или на отдельном слове, то тут начинаются проблемы. Вот код:Помогите, знатоки!
Спасибо за понимание.
Решение задачи: «.NET 4.x Получить слово под курсором мыши в RichTextBox»
textual
Листинг программы
Private Sub RichTextBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseUp
Dim startPosition, endPosition As Integer, t As String
Dim separators() As Char = {" "c, "."c, ","c, "?"c, "!"c, vbCr, vbTab, vbLf} ' символы разделители
endPosition = RichTextBox1.GetCharIndexFromPosition(e.Location)
RichTextBox1.SelectionStart = 0
RichTextBox1.SelectionLength = RichTextBox1.TextLength
RichTextBox1.SelectionBackColor = Color.White
RichTextBox1.SelectionColor = Color.Black
RichTextBox1.SelectionFont = New Font("Verdana", 10, FontStyle.Regular)
If e.Clicks = 1 And e.Button = MouseButtons.Left Then
t = RichTextBox1.Text
For startPosition = endPosition - 1 To 0 Step -1
If separators.Contains(t(startPosition)) Then
Exit For
End If
Next
startPosition += 1
For endPosition = endPosition To t.Length - 1
If separators.Contains(t(endPosition)) Then
Exit For
End If
Next
RichTextBox1.SelectionStart = startPosition
RichTextBox1.SelectionLength = endPosition - startPosition
If RichTextBox1.SelectionLength Then
RichTextBox1.SelectionBackColor = Color.LightGray
RichTextBox1.SelectionColor = Color.Red
RichTextBox1.SelectionFont = New Font("Verdana", 12, FontStyle.Bold)
End If
End If
End Sub