Có hai cách khác nhau để kết hợp các phương thức xử lý sự kiện với sự kiện trong VB.NET.
Việc đầu tiên liên quan đến việc sử dụng từ khóa Handles
, mà bạn thêm vào cuối định nghĩa của phương thức xử lý sự kiện. Ví dụ:
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
Phương pháp đầu tiên đơn giản hơn nhiều nếu bạn đã có phương thức xử lý sự kiện được xác định riêng biệt (tức là nếu bạn không sử dụng cú pháp lambda). Tôi sẽ giới thiệu nó bất cứ khi nào có thể.
Điều thứ hai liên quan đến việc sử dụng rõ ràng câu lệnh AddHandler
, giống như +=
trong C#. Đây là tài khoản bạn cần sử dụng nếu bạn muốn kết hợp trình xử lý sự kiện động, ví dụ: nếu bạn cần thay đổi chúng trong thời gian chạy. Vì vậy, mã của bạn, nghĩa là chuyển đổi, sẽ trông như thế này:
Dim ftpClient As New FtpClient()
AddHandler ftpClient.UploadProgressChanged, AddressOf ftpClient_UploadProgressChanged
AddHandler ftpClient.UploadFileCompleted, AddressOf ftpClient_UploadFileCompleted
Giống như bạn nói, tôi đã cố gắng chạy mã của bạn thông qua Developer Fusion's converter và rất ngạc nhiên khi thấy rằng họ đã trở về mã VB.NET không hợp lệ:
' WRONG CODE!
Dim ftpClient As New FtpClient()
ftpClient.UploadProgressChanged += New EventHandler(Of UploadProgressChangedLibArgs)(ftpClient_UploadProgressChanged)
ftpClient.UploadFileCompleted += New EventHandler(Of UploadFileCompletedEventLibArgs)(ftpClient_UploadFileCompleted)
Hóa ra, đó là a known bug có thể đáng để bỏ phiếu!
Nguồn
2013-07-07 10:13:14
cảm ơn bạn rất nhiều! câu trả lời đầy đủ và rất rõ ràng! :) – sharkyenergy
Tôi đang gặp lỗi này ngay bây giờ, điều này có nghĩa là gì? nhờ mệnh đề 'Error Xử lý yêu cầu biến WithEvents được định nghĩa trong loại chứa hoặc một trong các loại cơ sở của nó.' – sharkyenergy
@Justme Sử dụng từ khóa Handles ở cuối khai báo thủ tục để xử lý sự kiện được tạo bởi biến đối tượng được khai báo bằng cách sử dụng từ khóa ** WithEvents **. http://msdn.microsoft.com/library/vstudio/6k46st1y – Chris