首页 > 解决方案 > 我无法以编程方式设置标签的文本(vb.net)

问题描述

我已经看到了这个问题的许多可能的解决方案,但它们似乎都不起作用。

Try
            Dim ricevuto As String
            ricevuto = SerialPort1.ReadExisting

            If String.Compare(ricevuto.Substring(ricevuto.Length - 3), "OF") = 0 Then
                Me.Label1.Text = "aperto"
                Me.Label1.Refresh()
            ElseIf String.Compare(ricevuto.Substring(ricevuto.Length - 3), "ON") = 0 Then
                Me.Label1.Text = "chiuso"
                Me.Label1.Update()

            End If




        Catch ex As Exception
        End Try

这是代码,但 Label1 没有改变。

更新:错误是“跨线程操作无效”

标签: vb.net

解决方案


错误是“跨线程操作无效”

当您使用多个线程并且您不再在 UI 线程上时,您需要进行Invoke更改:

Label1.Invoke(Sub() Label1.Text = "aperto")

要显示整个事情:

Dim ricevuto As String = SerialPort1.ReadExisting()
Dim key As String = ricevuto.Substring(ricevuto.Length - 3)

If String.Compare(key, "OF") = 0 Then
    Label1.Invoke(Sub() Label1.Text = "aperto")
ElseIf String.Compare(key, "ON") = 0 Then
    Label1.Invoke(Sub() Label1.Text = "chiuso")
End If

推荐阅读