Я пишу программу для связи через последовательный порт. Все отправленные данные зеркалируются. Все работает нормально, кроме обратных пробелов. Когда я нажимаю кнопку Backspace, единственный способ удалить последний символ в текстовом поле - это использовать функцию mid, а затем перезаписать текущие данные новыми данными. Когда много данных находится внутри richtextbox, оно начинает мерцать. Я пробовал использовать функцию richtextbox.text.remove, но получаю эту ошибку. «Индекс и счетчик должны относиться к определенному месту в строке. Имя параметра: счетчик»
RichTextBox1.Text.Remove(RichTextBox1.TextLength, 1)
Я попытался ввести в функцию какое-то число, которое не вызывает ошибки, но данные из richtextbox не удаляются.
Вот код, который передает данные
KeyCharString = e.KeyChar 'stores key being pressed into KeyCharString
Try
SerialPort1.Write(KeyCharString) 'tx data for key being pressed
Catch ex As Exception
MsgBox(ex.Message) 'Displays error if serialport1 cannot be written to
End Try
If Asc(KeyCharString) = 8 Then 'If char is a backspace remove precious character and exit sub
RichTextBox1.Text = RichTextBox1.Text.Remove(RichTextBox1.TextLength, 1)
'RichTextBox1.Text = Mid(RichTextBox1.Text, 1, RichTextBox1.TextLength - 1)'Old code used to remove the character. Causes the richtextbox to flicker when rewriting the data
Exit Sub
End If
Это код, который получает данные
receivedString = SerialPort1.ReadExisting.ToString
If Asc(receivedString) = 8 Then 'deletes the received data if it is a backspace
receivedString = ""
Exit Sub
End If
RichTextBox1.AppendText(receivedString) 'adds new data to the richtextbox
Есть ли способ удалить 1 символ из richtextbox без перезаписи всех данных внутри него? Кроме того, richtextbox доступен только для чтения.