我想知道是否可以制作并将类别中的事件提升为表格?我有一个不断循环的类,但是当条件满足时,我想要一个按钮在表单上可见。我正在研究实现这一目标的不同方法。值得一提的是,我是多线程的,并且这个循环是在与UI不同的线程中运行的。这就是为什么我希望有可能引发一个事件,然后跳转到UI线程并使按钮可见,然后回到它在循环中的位置。
任何建议或方向表示赞赏。
答案 0 :(得分:3)
这样的东西会起作用,
Public Class MyClass
Public Event MyEvent()
Sub DoStuff()
RaiseEvent MyEvent
End Sub
Public Class
Public Class MyForm
Public Sub HandleEvent()
'can be called from another thread, so use invoke
Me.Invoke(Sub() MyButton.Visible = true )
End Sub
End Class
Dim mMyClass = New MyClass
Dim mMyForm = New MyForm
AddHandler mMyClass.MyEvent, AddressOf mMyForm.HandleEvent()
如果你的事件来自另一个线程,只要你记得在更新UI时使用.Invoke
,那么表格处理来自任何来源的事件都没有问题。
答案 1 :(得分:0)
我认为这是一个可能的解决方案:
1)将父表单作为参数传递给类; 2)以父表格形式,调用函数
Private Delegate Sub DoStuffDelegate()
Private Sub DoStuff()
If Me.InvokeRequired Then
Me.Invoke(New DoStuffDelegate(AddressOf DoStuff))
Else
btn.Visible = true
End If
End Sub
3)在课堂上,将其称为parentform.DoStuff()