此代码是AjaxControlToolkitSampleSite
的一部分。确切地说,它位于AsyncFileUpload
控件中:
AsyncFileUpload1.UploadedComplete += new EventHandler<AsyncFileUploadEventArgs>(AsyncFileUpload1_UploadedComplete);
如何将其转换为VB.NET?
答案 0 :(得分:5)
你走了:
AddHandler AsyncFileUpload1.UploadedComplete, AddressOf AsyncFileUpload1_UploadedComplete
或者,在您的代码中,您可以从左侧下拉列表中选择AsyncFileUpload1
控件(位于代码上方),然后从右侧下拉列表中选择UploadComplete
事件。
这将使用VB Handles
声明自动创建具有正确签名的事件处理程序。
答案 1 :(得分:1)
其他人已经展示了如何在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
答案 2 :(得分:0)
如果您可以将该代码放在编译的C#项目中,则可以使用SharpDevelop将该项目转换为VB.NET。这可能是在C#和VB.NET之间进行转换的最佳方式。
此外,ILSpy可以将用C#编写的已编译dll转换为VB.NET
答案 3 :(得分:0)
两种方法:
如果您的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
路线,因为这会导致memory leaks。它只是语法糖并在幕后连接一个AddHandler。我添加这个是因为我在学习VB之前已经被它烧过(我有一个C#背景)。