我在使用委托从线程更新表单控件时遇到问题。
这是我使用的流程。
仪表板屏幕(父 mdi 窗口)-> QuizScreen(子 Mdi 窗口) 一旦进入 QuizScreen 一个线程被启动并且该线程代码被保存在一个模块(server.vb)中。从这个线程我需要找到并更新一个控件(它是动态创建的)
以下是我从线程内部调用的委托代码
Public Sub ChangePictImage(ByVal ipaddress As String)
If Me.InvokeRequired Then
Dim del As NodeDelegate
del = AddressOf ChangePictImage
Me.Invoke(del, ipaddress)
'Return
Else
Me.BackColor = Color.Green
Me.BackgroundImage = System.Drawing.Image.FromFile(Application.StartupPath & "\images\application-on.png")
End If
Dim centerFlowPanel As FlowLayoutPanel = CType(QuizScreen.centerFlowPanel, FlowLayoutPanel)
Dim computerIconsPanel As FlowLayoutPanel = CType(centerFlowPanel.Controls("computerIconsPanel"), FlowLayoutPanel)
Dim flowpanel As FlowLayoutPanel = CType(computerIconsPanel.Controls("flow_" + ipaddress), FlowLayoutPanel)
Dim pictControl As PictureBox = CType(flowpanel.Controls("pict_" + ipaddress), PictureBox)
pictControl.Image = System.Drawing.Image.FromFile(Application.StartupPath & "\images\application-on.png")
End Sub
我从线程内部调用这个委托如下
threadData.dashboard.ChangePictImage(ipAddress)
您可能已经注意到,我已将代理 sub 放入 dashboad.vb
我能够找到最深层次的元素。事实上,我可以提醒他们的名字和其他属性但是当我尝试设置一些东西时。它什么也没做。
谁能帮我。