Vb.net 从模块捕获事件
我在一个模块中具有发送电子邮件的功能,其中我已声明了我的自定义事件:Vb.net 从模块捕获事件,vb.net,Vb.net,我在一个模块中具有发送电子邮件的功能,其中我已声明了我的自定义事件: Public Module myModule Public Event emailCompleted() 在该模块中,我具有发送电子邮件完成时触发的功能: Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) If e.Error I
Public Module myModule
Public Event emailCompleted()
在该模块中,我具有发送电子邮件完成时触发的功能:
Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
If e.Error Is Nothing Then
RaiseEvent emailCompleted()
End If
End Sub
正如预期的那样,所有这些都很有效
问题是我不知道如何在调用sendemail函数的主程序中捕捉该事件。如何做到这一点?您只能从类内引发事件并在该类外处理它们:
Public Class myModule
Public Event emailCompleted()
Private Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
If e.Error Is Nothing Then
RaiseEvent emailCompleted()
End If
End Sub
在您的呼叫代码模块中:
dim WithEvents myModuleObject as MyModule
Sub HandleEvent() Handles myModuleObject.emailCompleted
...
我可以在模块中无错误地引发事件,但无法在外部捕获它。无论如何,谢谢,我将重建一个程序,让它与类一起工作。是的,你可以在一个模块中引发一个事件,但它不能被捕获。您需要一个用events声明的类变量
,为此您需要一个类。使其工作正常:Dim WithEvents se As New sendSMTP。没有新关键字无法工作。这正常吗?是的,您需要将类变量设置为类的实例,否则它不包含任何内容。如果您在其他地方创建了一个实例,您不需要一个新的
实例,但是如果您没有,那么,是的,您需要一个新的
实例。