Dot-Net
在 VB.NET 中添加事件處理程序的語法
我有以下程式碼需要轉換為 VB.NET。問題是我發現的每個翻譯工具都將添加處理程序部分轉換錯了。我自己好像做不到。
FtpClient ftpClient = new FtpClient(); ftpClient.UploadProgressChanged += new EventHandler<UploadProgressChangedLibArgs>(ftpClient_UploadProgressChanged); ftpClient.UploadFileCompleted += new EventHandler<UploadFileCompletedEventLibArgs>(ftpClient_UploadFileCompleted);
在 VB.NET 中有兩種不同的方法可以將事件處理程序方法與事件相關聯。
第一個涉及使用
Handles關鍵字,您將其附加到事件處理程序方法定義的末尾。例如:Sub ftpClient_UploadProgressChanged(sender As Object, e As UploadProgressChangedLibArgs) Handles ftpClient.UploadProgressChanged ' ... End Sub Sub ftpClient_UploadFileCompleted(sender As Object, e As UploadFileCompletedEventLibArgs) Handles ftpClient.UploadFileCompleted ' ... End Sub如果您已經擁有單獨定義的事件處理程序方法(即,如果您不使用 lambda 語法),則第一種方法要簡單得多。我會盡可能推薦它。
第二個涉及顯式使用
AddHandler語句,就像+=在 C# 中一樣。如果您想動態關聯事件處理程序(例如,如果您需要在執行時更改它們),則需要使用此方法。所以你的程式碼,字面轉換,看起來像這樣:Dim ftpClient As New FtpClient() AddHandler ftpClient.UploadProgressChanged, AddressOf ftpClient_UploadProgressChanged AddHandler ftpClient.UploadFileCompleted, AddressOf ftpClient_UploadFileCompleted正如您所說,我嘗試通過Developer Fusion 的轉換器執行您的程式碼,並驚訝地發現它們返回了無效的 VB.NET 程式碼:
' WRONG CODE! Dim ftpClient As New FtpClient() ftpClient.UploadProgressChanged += New EventHandler(Of UploadProgressChangedLibArgs)(ftpClient_UploadProgressChanged) ftpClient.UploadFileCompleted += New EventHandler(Of UploadFileCompletedEventLibArgs)(ftpClient_UploadFileCompleted)事實證明,這是一個可能值得投票的已知錯誤!