Я не могу программно установить текст метки (vb. net) - PullRequest
0 голосов
/ 11 июля 2020

Я видел множество возможных решений этой проблемы, но ни одно из них не работает.

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 не меняется.

ОБНОВЛЕНИЕ: ошибка "межпоточная операция недействительна"

1 Ответ

1 голос
/ 12 июля 2020

ошибка: «Межпоточная операция недействительна»

Когда вы работаете с несколькими потоками, и вы больше не в потоке пользовательского интерфейса, вам необходимо 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
...