2013-03-11 7 views
5

क्या विज़ुअल बेसिक में WithEvents ऑब्जेक्ट के संदर्भ को बदलते समय EventHandler एस रखता है?क्या विज़ुअल बेसिक में इवेंट्स ऑब्जेक्ट के संदर्भ को बदलते समय अपने इवेंट हैंडलर रखता है?

कहो मैं एक बटन घोषणा की है, फायरिंग की घटनाओं:

Private WithEvents _MyButton 

अब मैं एक ईवेंट हैंडलर की सदस्यता हूँ:

Private Sub _MyButton_Click() Handles _MyButton.Click 
    ' Here I DoClick() 
End Sub 

DoClick() समारोह अभी भी बुलाया जाएगा जब मैं के कहने बदल नीचे दिखाए गए बटन ऑब्जेक्ट?

_MyButton = New Button() 
+0

मुझे लगता है: हाँ, लेकिन सुनिश्चित नहीं है ... – serhio

+2

हाँ, यह होगा। जब संदर्भ सेट किया जाता है, तो हैंडलर स्वचालित रूप से जोड़े जाते हैं और/या आवश्यकतानुसार हटा दिए जाते हैं। –

उत्तर

3

यह मैं उत्सुक हो गया तो मैं कल्पना करने के लिए यदि आप एक टाइमर का उपयोग इस प्रयोग करना क्या होता है एक छोटे से सांत्वना आवेदन लिखा है:

Private WithEvents _t As New Timers.Timer With {.Enabled = True} 
Private Sub _t_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles _t.Elapsed 
    Console.WriteLine("tick") 
End Sub 

Sub Main() 
    ' let it tick for 5 seconds 
    Task.Delay(5000).Wait() 

    ' destroy the current timer 
    Console.WriteLine("destroying this timer") 
    _t.Dispose() 
    _t = Nothing 

    ' add a little pause 
    Task.Delay(1000).Wait() 

    ' create a new timer 
    Console.WriteLine("creating a new timer") 
    _t = New Timers.Timer With {.Enabled = True} 

    ' let it tick for 5 seconds 
    Task.Delay(5000).Wait() 

End Sub 

आप इस कोड को चलाते हैं, तो आपको लगता है कि यह करता है मिलेगा वास्तव में इवेंट हैंडलर संलग्न करें जब _t का उदाहरण बदल दिया गया है। मुझे नहीं पता कि यह कैसे करता है, लेकिन जादू शायद Handles कीवर्ड में निहित है। किसी भी तरह, जवाब हाँ है।

संबंधित मुद्दे