Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从模块捕获事件_Vb.net - Fatal编程技术网

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。没有新关键字无法工作。这正常吗?是的,您需要将类变量设置为类的实例,否则它不包含任何内容。如果您在其他地方创建了一个实例,您不需要一个
新的
实例,但是如果您没有,那么,是的,您需要一个
新的
实例。