我想设置一个回调,该回调将由另一个类在我的类中引发:
Public Class CameraWindow
Inherits System.Windows.Forms.Control
Private m_camera As Camera = Nothing
' Camera property
<Browsable(False)> _
Public Property Camera() As Camera
Get
Return m_camera
End Get
Set(value As Camera)
' lock
Monitor.Enter(Me)
' detach event
If m_camera IsNot Nothing Then
m_camera.NewFrame -= New EventHandler(AddressOf camera_NewFrame)
timer.[Stop]()
End If
m_camera = value
needSizeUpdate = True
firstFrame = True
flash = 0
' atach event
If m_camera IsNot Nothing Then
m_camera.NewFrame += New EventHandler(AddressOf camera_NewFrame)
timer.Start()
End If
' unlock
Monitor.[Exit](Me)
End Set
End Property
' On new frame ready
Private Sub camera_NewFrame(sender As Object, e As System.EventArgs)
Invalidate()
End Sub
该事件定义在
Public Class Camera
Public Event NewFrame As EventHandler
但 VB.NET 不喜欢我附加和分离事件的方式。
有人可以告诉我如何正确地做到这一点吗?
非常感谢你的帮助!
看起来就像您通常使用 C# 一样。在 VB.NET 中,您使用AddHandler陈述:
AddHandler m_camera.NewFrame, AddressOf camera_NewFrame
要删除处理程序,请使用RemoveHandler
RemoveHandler m_camera.NewFrame, AddressOf camera_NewFrame
但是,如果事件处理程序位于不同的类中,则它需要是公共的:
Public Sub camera_NewFrame(sender As Object, e As System.EventArgs)
Invalidate()
End Sub
你需要一个实例:
AddHandler Camera.NewFrame, AddressOf m_camera.camera_NewFrame
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)