लागू करता है, तो मैं वर्ड में एक वीबीए प्रोजेक्ट विकसित कर रहा हूं और किसी अन्य वर्ग को लागू करने वाली कक्षा का उपयोग करते समय ईवेंट को संभालने में समस्या का सामना करना पड़ा है।रन-टाइम त्रुटि 45 9 जब एक वर्ग के साथ WithEvents का उपयोग करते हैं जो
मैं एक खाली वर्ग को परिभाषित, IMyInterface
:
Implements IMyInterface
Public Event SomeEvent()
Public Sub Xyz()
' ... code ...
RaiseEvent SomeEvent
End Sub
Private Sub IMyInterface_Xyz()
Xyz
End Sub
अगर मैं एक तृतीय श्रेणी, OtherClass
बनाते हैं तो वह एक सदस्य चर घोषित करती है:
Public Sub Xyz()
End Sub
Public Event SomeEvent()
और एक वर्ग, MyClass
ऊपर लागू करता है कि इंटरफ़ेस वर्ग के प्रकार के साथ:
Private WithEvents mMy As IMyInterface
और लागू करने वर्ग का एक उदाहरण के साथ इस चर प्रारंभ करने का प्रयास करें:
Set mMy = New MyClass
मैं एक रन-टाइम त्रुटि '459' प्राप्त: इस घटक घटनाओं के इस सेट का समर्थन नहीं करता।
MSDN page इस त्रुटि संदेश के लिए कहा गया है:
"आप एक घटक के साथ एक WithEvents चर का उपयोग करने की कोशिश की है कि यह कर सकते हैं घटनाओं के निर्दिष्ट सेट के लिए एक घटना स्रोत के रूप में नहीं काम उदाहरण के लिए। , आप एक वस्तु की घटनाओं डूब जा सकता है, तो किसी अन्य वस्तु कि पहली वस्तु इम्प्लीमेन्ट्स पैदा करते हैं। यद्यपि आप सोच सकते हैं आप कार्यान्वित वस्तु से घटनाओं सिंक कर सकता है, जो स्वचालित रूप से नहीं है मामला। केवल तरीकों और गुण के लिए एक इंटरफ़ेस लागू करता है लागू करता है। "
अप मैं क्या करने की कोशिश कर रहा हूँ। शब्दों, ऊपर काफी रकम" है कि "के बजाय" मामले स्वचालित रूप से नहीं है यह है फ्लैट आउट असंभव ", ऐसा लगता है कि काम करने के लिए मुझे कुछ मैन्युअल काम करने की ज़रूरत है, लेकिन यह मुझे नहीं बताता है! क्या किसी को पता है कि यह वीबीए में संभव है?
कि के लिए धन्यवाद; लगता है कि यह एक बग सब ठीक है मैं चाहता हूँ MSDN hadn मेरी उम्मीदों को पूरा नहीं हुआ! फिर भी, मुझे लगता है कि मेरे पास एक कामकाज है, हालांकि घटनाओं का उपयोग करना अधिक सुरुचिपूर्ण होता। C'est la vie। –
@ केनकियनन एक बग नहीं है, बल्कि COM घटनाएं कैसे काम करती हैं। आप घटनाओं का एक साथ उपयोग कर सकते हैं एक एडाप्टर पैटर्न का उपयोग करके इंटरफेस, जैसा कि [यहां] (https://stackoverflow.com/a/45825831/1188513) दिखाया गया है। (इस टिप्पणी के साथ मृतकों को जागृत करने के लिए खेद है - यह प्रश्नोत्तर हाल के प्रश्न से जुड़ा हुआ था ... और विषय आकर्षक आईएमओ है) –