我正在编写一个程序来通过串行端口进行通信。所有发送的数据都被镜像回来。一切正常,除了退格键。当我点击退格按钮时,我知道如何删除文本框中最后一个字符的唯一方法是使用 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
有没有办法从 Richtextbox 中删除 1 个字符而不重写其中的所有数据?此外,richtextbox 是只读的。