想看自定义事件可转此处:http://blog.youkuaiyun.com/qq_35952946/article/details/79185511
直接上代码:
1、单纯委托使用:
Delegate Sub wt(data As String) '定义委托
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim xc As New Threading.Thread(AddressOf betweenClass)
xc.Start()
End Sub
''' <summary>
''' 被委托的中间类
''' </summary>
Private Sub betweenClass()
Me.Invoke(New wt(AddressOf changeUI), "你好") '用Invoke跨线程更新UI
End Sub
Private Sub changeUI(data As String) '这里要和委托定义时的参数保持一致
Label1.Text = data
End Sub
End Class
2、自定义事件 加 委托更新UI
''' <summary>
''' 自定义事件 加 委托更新UI
'''
''' 委托:原本是自己的事,但是由于某种原因自己做不了,就委托别人来帮助完成
''' </summary>
Delegate Sub wt(data As String) '定义委托---有参
'Delegate Sub wt() '无参
Public Class Form1
Private WithEvents eveDemo As New EveDemo '获取事件类的对象,并用WithEvents修饰
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
eveDemo.Test() '1、先调用另一个类中的方法来触发自定义事件,在事件回调方法中来用Invoke跨线程更新UI
End Sub
''' <summary>
''' 自定义事件回调处理方法
''' </summary>
''' <param name="data"></param>
Private Sub mEve_Eve(data As String) Handles eveDemo.Eve
Me.Invoke(New wt(AddressOf changeUI), data) '定义委托有参数时,可在这里加参数
'Me.Invoke(New wt(AddressOf caozuo)) ’这是无参
End Sub
Private Sub changeUI(data As String) '这里要和委托定义时的参数保持一致
Label1.Text = data
End Sub
End Class