在VB.NET中将字符串追加到文本框文本时出错 [英] Error while append string to Textbox Text in VB.NET
问题描述
全部,
我正在VB.net中开发一个应用程序,用于从GSM Modem读取Serialport ......当我从Serialport读取附加到字符串变量的数据时,此后我需要检查天气文本是否有效,如果有数据是有效的,我将该文本附加到TextBox.Text,在这里我遇到一个运行时错误,即跨线程操作无效:从创建该线程的线程之外的其他线程访问控件"TextBox1". -------未处理InvalidOperation异常....
在这里,我提供了我的总代码
Hai All,
I am developing one application in VB.net for Serialport reading from GSM Modem......While i read data from serialport that is append to string variable, after that i need to check weather that text is valid or not , if data is valid i append that text to TextBox.Text here I get one runtime error ie.,"Cross-thread operation not valid: Control ''TextBox1'' accessed from a thread other than the thread it was created on." ------- InvalidOperation exception was unhandled....
Here I provide MY TOTAL CODE
Imports System.IO.Ports
Imports System.Windows.Forms.Form
Imports System
Public Class Main
Dim WithEvents serialport As New SerialPort()
Dim Rxd As String
Public Rxd1 As String
Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each sp As String In My.Computer.Ports.SerialPortNames
ComboBox1.Items.Add(sp)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
With serialport
.PortName = ComboBox1.Text
.BaudRate = "9600"
.Parity = Parity.None
.StopBits = StopBits.One
.DataBits = 8
.Handshake = Handshake.None
.ReadBufferSize = 500
.Open()
AddHandler serialport.DataReceived, AddressOf serialport_DataReceived
''.ReadBufferSize = 500
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Height = 743
Me.Width = 1029
Label8.Height = 30
Label8.Width = 85
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If serialport.IsOpen = True Then
serialport.Write("$M1#")
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
serialport.WriteLine("$M1#")
End Sub
Private Sub serialport_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serialport.DataReceived
Dim sp As SerialPort = CType(sender, SerialPort)
Dim menu_count As Integer
Dim res As Integer
Rxd = sp.ReadExisting
menu_count = InStr(1, Rxd, "$M2", vbTextCompare)
If menu_count > (500 - 189) Then
sp.Write("$M1#")
ElseIf menu_count Then
menu_count = menu_count + 3
For res = 0 To 5
Rxd1 = Mid(Rxd, menu_count, 3)
menu_count = menu_count + 3
MsgBox(Rxd1)
If res = 0 Then
Me.TextBox1.Text = Rxd1
ElseIf res = 1 Then
TextBox2.Text = Rxd1
ElseIf res = 2 Then
TextBox3.Text = Rxd1
ElseIf res = 3 Then
TextBox4.Text = Rxd1
ElseIf res = 4 Then
TextBox5.Text = Rxd1
ElseIf res = 5 Then
TextBox6.Text = Rxd1
End If
Next
End If
End Sub
Me.TextBox1.Text = Rxd1
在这个地方我遇到了错误
ANYBODY PLZZ HELP MEEEEE ........
AT THIS POINT I GET ERROR
ANYBODY PLZZ HELP MEEEEE........
推荐答案
M1#) 万一 结束子 私有子Button5_Click(ByVal发送者作为System.Object,ByVal e作为System.EventArgs)处理Button5.Click 结束子 私有子Button6_Click(ByVal发送者作为System.Object,ByVal e作为System.EventArgs)处理Button6.Click serialport.WriteLine("
M1#") End If End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click serialport.WriteLine("
M1#") 结束子 私有子serialport_DataReceived(ByVal发送者作为对象,ByVal e作为System.IO.Ports.SerialDataReceivedEventArgs)处理serialport.DataReceived Dim sp As SerialPort = CType(发送器,SerialPort) 昏暗menu_count为整数 Dim res As Integer Rxd = sp.ReadExisting menu_count = InStr(1,Rxd,"
M1#") End Sub Private Sub serialport_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serialport.DataReceived Dim sp As SerialPort = CType(sender, SerialPort) Dim menu_count As Integer Dim res As Integer Rxd = sp.ReadExisting menu_count = InStr(1, Rxd, "
M2",vbTextCompare) 如果menu_count> (500-189)然后 sp.Write("
M2", vbTextCompare) If menu_count > (500 - 189) Then sp.Write("
这篇关于在VB.NET中将字符串追加到文本框文本时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!