在VB.NET中将字符串追加到文本框文本时出错 [英] Error while append string to Textbox Text in VB.NET

查看:124
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆