我是VB和.Net的新手,我有一个任务,我无法继续。从vb.net的线程访问动态创建的表单元素
- 我启动一个线程屏蔽1负载时。用户然后转到screen2。
- 在screen2上线程仍在后面运行。当用户上画面2执行的操作(比如单击)时,它会触发线程基于画面2访问元素
- 元素在屏幕2被动态创建和IDE没有设计。
因此,本质上在一个表单上创建的线程需要访问另一个表单上动态创建的表单元素。
如果我的问题太简单了,请原谅我。如果不清楚,请让我知道,我会重写它。
注意:我说的元素基本上是流布局面板内的图片框。
预先感谢 所有帮助被热切期待和感激(现在咬指甲)。
编辑
比方说,一个名为ctThread线程在仪表盘屏幕
ctThread.start()
此线程循环运行的,等待一个触发事件开始。
同时用户已经到了一个名为QuizScreen屏幕,并在此屏幕(形式)我要更新一些动态创建的元素的名字,我知道。
所以当时间是正确的,其正在等待(监听线程),它会调用下面的子ctThread。
子
public sub changeComputerStatus(ByVal node)
Dim flowpanel As FlowLayoutPanel = CType(QuizScreen.FlowLayoutPanel1.Controls("flow_" + node), FlowLayoutPanel)
Dim pictControl As PictureBox = CType(flowpanel.Controls("pict_" + node), PictureBox)
pictControl.Image = System.Drawing.Image.FromFile(Application.StartupPath & "\images\application-on.png")
end sub
这里节点不断变化。这就是我区分我创建的每个控件的方式。
注意:此线程在名为dashboardscreen的屏幕中启动,用户现在位于不同的屏幕QuizScreen上。
上面给出的子代的第一行运行并不返回流程面板。因此,当它进入下一行时,它不能使用任何内容作为参考。因此,上面提到的错误。
此任务的哪一部分是您遇到的问题?你有没有尝试过,它不能正常工作?或者你得到一个错误?或者你只是要求提供关于如何去做类似的事情的一般建议? –
嗨史蒂文感谢您的回复。在尝试访问动态创建的元素时出现错误。错误是“对象引用未设置为对象的实例”。如果我尝试使用表单上的事件访问相同的元素(动态元素),我可以做到这一点。但是在线程中尝试相同的代码时。它由于某种原因没有找到元素。 –
我是一个web开发者(php/python),基本上在vb.net项目中被捕获。应用程序开发对我来说是非常新的。 –