vb.net - 我无法以编程方式设置标签的文本(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 没有改变。
更新:错误是“跨线程操作无效”
解决方案
错误是“跨线程操作无效”
当您使用多个线程并且您不再在 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
推荐阅读
- python - 如何使用 aws 设计多客户端预处理软件管道?
- linux - systemd-networkd-wait-online.service 在启动时失败
- php - 我们如何用逗号将不同的输入字段存储在表的同一列上,
- php - Laravel 事件阻止更新模型
- wordpress - 无法创建新的 Wordpress 数据库表
- javascript - LookAt 矩阵(归一化平行投影)
- javascript - 为什么从模拟类中的另一个函数调用函数的测试失败?
- javascript - 下拉菜单导航栏问题
- php - 在 sprintf 中添加 html
- npm-install - 无法在 Windows 中安装 npm。已安装node@12