【问题标题】:VB.NET Event addressofVB.NET 事件地址
【发布时间】:2014-04-08 18:04:27
【问题描述】:

我想设置一个回调,该回调将由另一个班级在我的班级中引发:

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 不喜欢我附加和分离事件的方式。 谁能告诉我如何正确操作?

非常感谢您的帮助!

【问题讨论】:

    标签: vb.net events callback addressof


    【解决方案1】:

    这看起来好像您通常使用 C#。在 VB.NET 中,您使用 AddHandler statement:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2016-03-10
      • 2011-05-22
      • 1970-01-01
      相关资源
      最近更新 更多