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

时间:2015-05-08 13:49:42

标签: vb.net visual-studio-2013 integer label

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

我有一个主MDI格式,它从传感器读取Arduino的模拟引脚。我接受了串行通信并对其进行了分析,这一切都已经解决了。

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

我创建了一个班级" 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

结束班

在我的孩子表格上,我只是:

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

结束班

我的主要表单修改了儿童表单"" 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

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

提前致谢!!

1 个答案:

答案 0 :(得分:0)

我弄清楚了自己......从表单到表单的跨线程操作。 从我的主窗体更改窗体变量,如下所示:

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

解决了这个问题。