मैं थोड़ा उलझन में हूँ। मुझे पता है कि कस्टम इवेंट डेटा रखने के लिए मैं EventArgs से व्युत्पन्न कक्षा बना सकता हूं। लेकिन क्या मैं किसी भी तरह बेस क्लास EventArgs को नियोजित कर सकता हूं? माउस बटन की तरह, ग्राहक विधि में क्लिक करें, हमेशा "EventArgs e" पैरामीटर होता है। क्या मैं किसी भी तरह से विधि बना सकता हूं जो इस तरह से डेटा पास करेगा, मेरा मतलब है कि वे बेस इवेंटग्स में पारित हो जाएंगे?व्युत्पन्न कक्षा के निर्माण के बिना EventArgs पर डेटा पास करना संभव है?
उत्तर
क्या EventArgs
डेटाटाइप कच्चे का उपयोग करना संभव है? पूर्ण रूप से। MSDN के अनुसार:
This class contains no event data; it is used by events that do not pass state information to an event handler when an event is raised. If the event handler requires state information, the application must derive a class from this class to hold the data.
http://msdn.microsoft.com/en-us/library/system.eventargs.aspx
private event TestEventEventHandler TestEvent;
private delegate void TestEventEventHandler(EventArgs e);
private void button1_Click(object sender, EventArgs e)
{
TestEvent += TestEventHandler;
if (TestEvent != null)
{
TestEvent(new EventArgs());
}
}
private void TestEventHandler(EventArgs e)
{
System.Diagnostics.Trace.WriteLine("hi");
}
क्या तुमने कभी यह करना चाहिए? किसी भी कारण से मैं सोच सकता हूं कि क्या। आप अपने खुद के ही क्लिक बनाना चाहते हैं तो आप सिर्फ अपने दम पर MouseEventArgs
का दृष्टांत कर सकते हैं, भी:
MouseEventArgs m = new MouseEventArgs(System.Windows.Forms.MouseButtons.Left, 1, 42, 42, 1);
नहीं। EventArgs बेस क्लास कुछ मानक ईवेंट प्रतिनिधि प्रकारों की अनुमति देने का एक तरीका है। आखिरकार, एक हैंडलर को डेटा पास करने के लिए, आपको EventArgs को उपclass करना होगा। आप इसके बजाय प्रेषक तर्क का उपयोग कर सकते हैं, लेकिन यह वास्तव में उस वस्तु को होना चाहिए जिसने घटना को निकाल दिया था।
आप सामान्य प्रकार दृष्टिकोण के माध्यम से EventArgs वर्ग का उपयोग कर सकते हैं। घटना सुनकर
if(SizeRectChanged != null){
Rect r = new Rect(0,0,0,0);
SizeRectChanged(this,r);
}
:
public EventHandler<Rect> SizeRectChanged;
घटना स्थापना:
anyElement.SizeRectChanged += OnSizeRectChanged;
public void OnSizeRectChanged(object sender, Rect e){
//TODO abything using the Rect class
e.Left = e.Top = e.Width = e.Height = 50;
}
तो, की जरूरत नहीं है इस नमूने में, मैं रेक्ट वर्ग के साथ वापसी प्रकार के रूप में उपयोग करेगा नए कार्यक्रम कक्षाओं या प्रतिनिधियों को बनाने के लिए, बस एक विशिष्ट प्रकार टी
यह गलत लगता है। [एमएसडीएन वेबसाइट उदाहरण] (http://msdn.microsoft.com/en-us/library/db0etb8x%28v=vs.110%29.aspx) दिखाता है कि Rect या TEventArg को EventArgs से उत्तराधिकारी होना है। जब तक कुछ ऐसा नहीं होता है तो मैं गलतफहमी कर रहा हूं। –
थॉमस, मुझे यह भ्रमित भी मिला। लेकिन जुपी के सुझाव ने मेरे लिए काम किया। –
वाह ... इच्छा है कि मैं इसे बहुत समय पहले जानता था। मैंने हमेशा यह माना कि जब आपने EventHandler
- 1. घटनाओं के साथ डेटा पास करना
- 2. क्या सी # में कक्षा के बिना ऑब्जेक्ट बनाना संभव है?
- 3. व्युत्पन्न कक्षा
- 4. सी # - क्या एक ही कक्षा के भीतर बेस क्लास में एक विधि को पार करना संभव है (व्युत्पन्न कक्षा नहीं)?
- 5. क्या सी ++ में किसी फ़ंक्शन के पैरामीटर के रूप में कक्षा को पास करना संभव है?
- 6. क्या कक्षा के सभी उप-वर्ग प्राप्त करना संभव है?
- 7. क्या संपूर्ण डेटासेट के बिना पेजरैंक करना संभव है?
- 8. रूबी थ्रेड के लिए व्युत्पन्न कक्षा?
- 9. क्या पैरामीटर रहित कन्स्ट्रक्टर के बिना कक्षा के साथ प्रोटोबफ-नेट का उपयोग करना संभव है?
- 10. ओवरलोडेड फ़ंक्शंस व्युत्पन्न कक्षा
- 11. व्युत्पन्न मॉडल संबंधित कक्षा
- 12. क्या रूट निजीकरण के बिना मोंगोड स्थापित करना संभव है?
- 13. क्या व्युत्पन्न कक्षा में एक स्थिर विधि को ओवरराइड करना संभव है?
- 14. एक्सप्रेस - सभी मार्गों पर डेटा पास करना
- 15. सी ++ share_ptr व्युत्पन्न कक्षा
- 16. सी # व्युत्पन्न कक्षा
- 17. बेस क्लास को व्युत्पन्न कक्षा
- 18. DISPLAY के बिना pyplot का उपयोग करना संभव है?
- 19. कक्षा आरेख में "व्युत्पन्न गुण" क्या है?
- 20. UIPiewController में UIViewController के बिना UIView प्रस्तुत करना संभव है?
- 21. "आईडी" के बिना शेयरपॉइंट सूची अपडेट करना संभव है?
- 22. रनटाइम पर कक्षा सारांश प्राप्त करना संभव है?
- 23. ग्रहण के बिना Xtext का उपयोग करना संभव है?
- 24. त्वचा के लिए पैरामीटर पास करना संभव है?
- 25. घोषणा के बिंदु पर एक संपत्ति आरंभ करना संभव है
- 26. कक्षा को विरासत के बिना एक गैर-गतिशील एक्शनस्क्रिप्ट 3 कक्षा में व्यवहार जोड़ना संभव है?
- 27. आईट्यून्स के बिना एक प्रावधान प्रोफ़ाइल स्थापित करना संभव है?
- 28. कक्षा द्वारा एनएसएआरएआर फ़िल्टर करना संभव है?
- 29. xsi के बिना व्युत्पन्न वस्तुओं का सीरियलाइजेशन:
- 30. विभिन्न विंडोज़ फॉर्मों पर ऑब्जेक्ट पास करना
पास करने वाला इवेंट हैंडलर बनाएं यदि आप डेटा को पिगबैक करने का प्रयास कर रहे हैं माउस क्लिक इवेंट, न केवल आप ऐसा नहीं कर सकते हैं, यह इंगित करता है कि आपके डिज़ाइन के साथ कोई समस्या है। – Will
यह स्पष्ट करने का कोई मौका क्यों यह एक डिजाइन समस्या है? क्या मेनू को बटनों के ढेर के रूप में अर्थपूर्ण रूप से नहीं देखा जा सकता है, जिसमें से संबंधित घटना आपको यह पूछने की अनुमति देती है कि मेनू में कौन सा 'बटन' दबाया गया था? एक बटन क्लिक के साथ अतिरिक्त जानकारी पास करने के इच्छुक द्वारा आप किस डिजाइन सिद्धांत को तोड़ रहे हैं? – Patrick