VB.NET

2013-07-07 7 views
6

में इवेंट हैंडलर जोड़ने के लिए सिंटेक्स मेरे पास निम्नलिखित कोड है जो मुझे VB.NET में कनवर्ट करने की आवश्यकता है। समस्या यह है कि मैंने पाया है कि प्रत्येक अनुवाद उपकरण जोड़ हैंडलर हिस्सा गलत बदल रहा है। मैं खुद से ऐसा करने में सक्षम नहीं प्रतीत होता।VB.NET

FtpClient ftpClient = new FtpClient(); 
ftpClient.UploadProgressChanged += new EventHandler<UploadProgressChangedLibArgs>(ftpClient_UploadProgressChanged); 
ftpClient.UploadFileCompleted += new EventHandler<UploadFileCompletedEventLibArgs>(ftpClient_UploadFileCompleted); 

उत्तर

10

वीबी.नेट में किसी ईवेंट के साथ ईवेंट हैंडलर विधियों को जोड़ने के दो अलग-अलग तरीके हैं।

पहले में 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 

पहली विधि है, तो आप पहले से ही अलग से वैसे भी ईवेंट हैंडलर तरीकों परिभाषित किया गया गया है बहुत सरल है (यानी, आप एक लैम्ब्डा सिंटैक्स का उपयोग नहीं कर रहे हैं)। जब भी संभव हो मैं इसकी सिफारिश करता हूं।

दूसरे में 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 है जो कि मतदान के लायक हो सकता है!

+0

आपको बहुत बहुत धन्यवाद! संपूर्ण उत्तर और बहुत स्पष्ट! :) – sharkyenergy

+0

मुझे अब यह त्रुटि मिल रही है, इसका क्या अर्थ है? धन्यवाद 'त्रुटि हैंडल क्लॉज के साथ युक्त प्रकार या उसके मूल प्रकारों में से एक परिभाषित वैरिएबल चर की आवश्यकता होती है। – sharkyenergy

+1

@Justme किसी ऑब्जेक्ट वेरिएबल द्वारा उठाए गए ईवेंट को संभालने के कारण प्रक्रिया घोषणा के अंत में हैंडल कीवर्ड का उपयोग करें ** WithEvents ** कीवर्ड का उपयोग करके घोषित किया गया। http://msdn.microsoft.com/library/vstudio/6k46st1y – Chris