VS2013 标签文本屏幕从 variablechanged 引发的事件更新

VS2013 label text screen update from variablechanged raised event

我不知道如何解决这个...

我有一个主要的 MDI 表单,它从传感器读取 Arduino 的模拟引脚。我把串口通信拿过来分析一下,这就全搞定了

在这个主窗体中,我想要 child 每个模拟引脚的窗体,并带有代表模拟值的标签。

我创建了一个 class "myVar" 以在值更改时引发事件:

Public Class myVar
Private mValue As Integer
Public Event VariableChanged(ByVal mValue As Integer)

Public Property Variable As Integer
    Get
        Variable = mValue
    End Get
    Set(ByVal value As Integer)
        mValue = value
        RaiseEvent VariableChanged(mValue)
    End Set
End Property

结束Class

在我的 child 表格上,我只有:

Public Class WasteVacuum
Public WithEvents value As New myVar

Private Sub WasteVacuum_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.MdiParent = Main
End Sub

Private Sub VariableChanged(ByVal NewValue As Integer) Handles value.VariableChanged
    waste_lbl.Text = Convert.ToString(value.Variable)
    waste_lbl.Refresh()
    Console.WriteLine(value.Variable & " - " & waste_lbl.Text)
End Sub

结束Class

我的主窗体根据串口连接的读取修改了child窗体的"value"。 "VaraibleChanged" 似乎运行良好,但我的标签 "waste_lbl" 不会在屏幕上更新!!!

这是控制台中的结果 (value.variable - waste_lbl.text):

0 - 0
0 - 0
0 - 0
0 - 0
0 - 0
0 - 0
0 - 0
5 - 5
38 - 38
87 - 87
130 - 130
152 - 152
163 - 163
179 - 179
190 - 190
201 - 201
212 - 212
222 - 222
233 - 233
244 - 244
255 - 255
266 - 266
271 - 271
282 - 282
288 - 288
298 - 298
309 - 309
320 - 320
331 - 331
336 - 336
342 - 342
342 - 342

看起来我的标签正在正确获取变量值,但为什么它不在屏幕上更新??

提前致谢!!

我自己弄明白了...从一个表单到另一个表单的跨线程操作。 像这样从我的主表单更改表单变量:

Me.BeginInvoke(Sub() A2_frm.val.Variable = A2.Variable)

已解决此问题。