如何在VB.NET中添加事件处理程序

本文关键字:添加 事件处理 程序 NET VB | 更新日期: 2023-09-27 18:20:05

此代码是AjaxControlToolkitSampleSite的一部分。确切地说,它在AsyncFileUpload控制中:

 AsyncFileUpload1.UploadedComplete += new EventHandler<AsyncFileUploadEventArgs>(AsyncFileUpload1_UploadedComplete);

如何将其转换为VB.NET?

如何在VB.NET中添加事件处理程序

开始:

AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete

或者,在代码中,您可以从左侧下拉列表(代码正上方)中选择AsyncFileUpload1控件,然后从右侧下拉列表中选择UploadComplete事件。

这将使用VBHandles声明自动创建具有正确签名的事件处理程序。

其他人已经展示了如何在VB.中将event+=直译为AddHandler

然而,尽管有相似之处,VB和C#是不同的语言,好的C#代码在字面翻译时可能不是好的VB代码。例如,在VB中,将固定事件处理程序附加到ASP.NET控件的规范方法是使用Handles关键字:

Protected Sub AsyncFileUpload1_UploadedComplete(sender As Object, _
                                                e As AsyncFileUploadEventArgs) _
    Handles AsyncFileUpload1.UploadedComplete
    ' Your event handler code is here
End Sub

如果您可以将该代码放入编译的C#项目中,则可以使用SharpDevelop将该项目转换为VB.NET。这可能是在C#和VB.NET.之间进行翻译的最佳方式

此外,ILSpy可以将用C#编写的已编译dll转换为VB.NET

两种方法:

如果AsyncFileUpload1变量具有WithEvents限定符,则可以在事件处理程序本身上使用Handles关键字执行以下操作:

Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AsyncFileUploadEventArgs) Handles AsyncFileUpdate1.UploadedComplete
    'handler logic...
End Sub

如果没有WithEvents限定符,则以下操作有效:

AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete

要删除事件处理程序,请执行以下操作:

RemoveHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete

小心WithEvents/Handles路由,因为这可能会导致内存泄漏。它只是语法上的糖,并在幕后连接一个AddHandler。我添加这个是因为我以前在学习VB时被它烧着了(我有C#背景)。