0

我将首先给出一个我正在处理的简化示例

我有一个 Windows 窗体 - 让我们称之为“formA”,在 formA 上我有一个按钮,在按钮的属性中我设置为可见 = false。我有一个名为 MainLoop 的不同类

Public class MainLoop


 sub new()
 end sub

 public sub run()
       If someCondition then
           formA.ButtonName.Visible = True
       End if


 end sub
 end class

我在这个应用程序中运行了不止一个线程,一个线程只是通过这个“公共子运行”循环运行,直到满足某些条件。通过调试和单步执行应用程序,我确信它正在运行设置可见性 = true 的行。但是按钮只是没有出现在我的表单上。我已经确认这不是一个简单的拼写错误或任何东西——我似乎在这里遗漏了一个基本的逻辑。

我试过做

dim TempForm as new formA

然后在我尝试的 IF 语句中

 TempForm.ButtonName.Visible = true

但这是创建表单的一个新实例 - 它实际上并没有设置我正在使用的当前表单的按钮。

任何帮助表示赞赏。

4

2 回答 2

2

如果您在 UI 线程以外的线程上设置可见性,则必须调用它才能使其可见。您不能从另一个线程触摸 UI 线程上的任何内容。

于 2012-11-29T20:58:41.507 回答
0

对于任何想知道答案的人最终是,

Control.Invoke 方法(委托,Object())

教程可以在这里找到

于 2012-12-10T12:08:05.607 回答