事件在类中引发,以无响应的形式处理此事件

时间:2014-10-21 17:27:42

标签: vb.net

我在VS2008操作系统上使用Win 7。我的问题是在我的应用程序中使用class -- class1读取扫描仪数据,因此一旦读取数据,我就发出代码以从另一个class -- class2引发事件。我有多种形式可以使用这些扫描数据,因此,无论顶层形式如何都能处理。我可以看到引发的事件,但活动表单上的处理程序没有响应。你能告诉我我的代码中有什么问题吗?

class1读取扫描数据并调用class2以引发事件

Public Class class1   
    Private WithEvents evnt As New class2

    Private Sub DataReceived()       
        evnt.ScanData()        
    End Sub
End class   'end class1

Public Class class2
    Public Event NewScanData(ByVal ScanData As String)

    Public Sub ScanData()
        RaiseEvent NewScanData(ScanData)
        'MsgBox("Invoked event")
    End Sub
End Class    'end class2

**注意:我可以看到Invoked事件显示的消息,这意味着事件确实被引发。但下面的表单类似乎没有收到该事件:

Public Class Form1
    Friend WithEvents event1 As New class2
    Private Sub GetScanData(ByVal ScanData As String) Handles event1.NewScanData
         'do something to process scanned data
    End sub
End Class

谢谢你

2 个答案:

答案 0 :(得分:0)

我怀疑Form1中的event1实例与调用ScanData的实例不同。您可能有2个class2实例。一个是ScanData调用它,另一个是Form1完全与它断开连接。在某个地方,我认为您需要设置Form1.event1 = class1.evntclass1.evnt = Form1.event1

答案 1 :(得分:0)

我稍微修改了你的Form1代码。我在其上放了一个调用ScanData方法的按钮,这导致在Form1中触发event1。也许这会有所帮助吗?

Public Class Form1
    Friend WithEvents event1 As New Class2
    Private Sub GetScanData(ByVal ScanData As String) Handles event1.NewScanData
        'do something to process scanned data
        MessageBox.Show(ScanData)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        event1.ScanData()   ' if you call this method event1's NewScanData fires
    End Sub
End Class