gpt4 book ai didi

.net - 在 VB.NET 中添加事件处理程序的语法

转载 作者:行者123 更新时间:2023-12-04 00:30:48 25 4
gpt4 key购买 nike

我有以下代码需要转换为 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's converter 运行你的代码并且惊讶地发现他们返回了无效的 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)

原来,那是 a known bug这可能值得投票!

关于.net - 在 VB.NET 中添加事件处理程序的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com