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)
已解决此问题。
我不知道如何解决这个...
我有一个主要的 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)
已解决此问题。