Vb.net 如何在类库(DLL)上声明事件并在窗体上捕获它们?

Vb.net 如何在类库(DLL)上声明事件并在窗体上捕获它们?,vb.net,Vb.net,我需要在类库上设置事件,并在表单中捕获它们 例如,我在中运行一个子系统,我需要“接收”类中该子系统正在运行的事件 DLL文件是我在VisualBasic中创建的,但是我如何在该文件上引发事件以在表单中捕获 请提供一个示例。当您谈到“本机”非托管DLL时,没有直接的方法来实现这一点。 必须声明应用于此事件的方法签名。 然后必须提供一种方法,将指向与此签名匹配的方法的指针放入DLL(提供回调方法)。然后,您可以在必要时从DLL调用此方法(而不是触发事件)。在DLL中编写代码 Public Even

我需要在类库上设置事件,并在表单中捕获它们

例如,我在中运行一个子系统,我需要“接收”类中该子系统正在运行的事件

DLL文件是我在VisualBasic中创建的,但是我如何在该文件上引发事件以在表单中捕获


请提供一个示例。

当您谈到“本机”非托管DLL时,没有直接的方法来实现这一点。 必须声明应用于此事件的方法签名。
然后必须提供一种方法,将指向与此签名匹配的方法的指针放入DLL(提供回调方法)。然后,您可以在必要时从DLL调用此方法(而不是触发事件)。

在DLL中编写代码

 Public Event MySpecialEvent ()

 Private Sub Test 
   RaiseEvent MySpecialEvent
 End Sub
表单中的代码

 Private _MyDll as MyDLL

 Public Sub Main
   _MyDLL = New MyDLL
   AddHandler _MyDLL.MySpecialEvent, AddressOf MySpecialEventHandler
 End Sub

 Private Sub MySpecialEventHandler
   'Put your code here to act upon the handled event
 End Sub  
您还需要在表单生命周期中的某个时刻删除事件处理程序

RemoveHandler _MyDLL.MySpecialEvent, AddressOf MySpecialEventHandler

什么类型的类库?管理的还是未更改的?你创造了一个?潜艇引发了一个事件,你需要捕捉它吗?请提供更多信息。dll是由我在vb中创建的,但我不知道如何在其上引发事件以便在表单中捕获。您处理事件,但不捕获它们:)如果需要将数据作为字符串传递给侦听代码公共事件MySpecialEvent,您还可以在事件中包含参数