이벤트 처리기 메서드를 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
첫 번째 방법은 훨씬 간단합니다 (즉, 당신이 람다 구문을 사용하지 않는 경우). 가능할 때마다 추천 할 것입니다.
두 번째는 C#의 +=
처럼 AddHandler
문을 명시 적으로 사용합니다. 이벤트 핸들러를 과 동적으로 연결하려는 경우 사용하는 데 필요합니다.. 런타임에 변경해야하는 경우 그래서 코드가 변환 문자 그대로 같을 것이다 :
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입니다.
대단히 감사합니다! 철저한 대답과 매우 명확! :) – sharkyenergy
지금이 오류가 발생합니다.이게 무슨 뜻입니까? thanks 'Error Handles 절에는 WithEvents 변수가 포함 된 유형 또는 기본 유형 중 하나에 정의되어 있어야합니다.' – sharkyenergy
@Justme 프로 시저 선언 끝에 Handles 키워드를 사용하여 객체 변수가 발생시킨 이벤트를 처리하게합니다 ** WithEvents ** 키워드를 사용하여 선언되었습니다. http://msdn.microsoft.com/library/vstudio/6k46st1y – Chris