Ваша проблема Do Until letter = " " Or RichTextBox1.SelectionStart = 0
Простой шаг с использованием отладчика и просмотра значений показал бы это довольно быстро.Было бы показано, что (используя слово Hello), когда selectionstart равен 0, цикл заканчивается, но вам все еще нужно обработать этот цикл еще раз, потому что в тот момент, когда он возвращается к 0, вы находитесь только на e.Решение этой проблемы состоит в том, чтобы изменить это на цикл до.
Do
RichTextBox1.SelectionStart -= 1
RichTextBox1.SelectionLength += 1
letter = RichTextBox1.Text.Substring(RichTextBox1.SelectionStart, 1)
Loop Until letter = " " Or letter Or = vbLf Or RichTextBox1.SelectionStart = 0
Теперь следующая проблема, с которой вы столкнулись, заключается в том, что во второй строке вы не достигнете 0 "", но вы хотите закончить поиск там, так чтовам нужно включить тест для vbLf (символ перевода строки, когда происходит, когда кто-то нажимает клавишу ввода, чтобы перейти на новую строку.
Теперь, когда у вас есть новая точка остановки, вам нужно будет включить ее в свой чекдля изменения цвета
If RichTextBox1.SelectedText = "Hello" OrElse RichTextBox1.SelectedText = " Hello" OrElse RichTextBox1.SelectedText = vbLf & "Hello" Then
RichTextBox1.SelectionColor = Color.HotPink
ElseIf RichTextBox1.SelectedText = "Dinesh" OrElse RichTextBox1.SelectedText = " Dinesh" OrElse RichTextBox1.SelectedText = vbLf & "Dinesh" Then
RichTextBox1.SelectionColor = Color.Peru
Else
Как вы можете видеть, это станет огромным блоком кода, когда вы добавите в него новые команды и правила. Например, у вас есть проблемы с пунктуацией. Этот код будетне раскрашивайте Dinesh в следующем примере: Hello is your name Dinesh?
из-за?
Еще один способ форматирования кода, который я видел, - сканировать текущую строку, в которой находится пользователь, по списку известных ключевых слов, а затемотформатируйте строку в соответствии с вашими правилами форматирования для любых найденных ключевых слов. Поскольку существует способ поиска неполного текста (например, найти Динеш в Динеш?), это уменьшиткод.
Редактировать: Также забыл упомянуть.Этот код завершится сбоем, если первым символом будет пробел, Enter или Backspace.Ты знаешь почему?это простое исправление, поэтому я оставлю это на ваше усмотрение.