एएसपी.नेट यूजर कंट्रोल और डिफॉल्ट इवेंट

रेखांकित करें

ठीक है, मैंने Google को यह किया है और पहले से ही एक बड़ी वसा की उम्मीद है नहीं !! लेकिन मैंने सोचा कि मुझे पूछना चाहिए क्योंकि मुझे पता है कि कभी-कभी लोगों के सिर में चारों ओर गुप्त ज्ञान के अजीब छोटे मणि हो सकते हैं ^ _ ^

मैं अध्ययन के लिए एक पुस्तक में कुछ अभ्यासों के माध्यम से अपना रास्ता काम कर रहा हूं, और यह विशेष अभ्यास उपयोगकर्ता नियंत्रण है। मैंने एक साथ नियंत्रण किया है और इसके लिए डिफॉल्टइवेंट सेट करना चाहते हैं (पिछले नियंत्रणों के लिए ऐसा किया है) इसलिए जब मैं इसे डबल-क्लिक करता हूं, तो बनाई गई डिफ़ॉल्ट घटना जो भी मैं इसे निर्दिष्ट करता हूं।

NOTE: This is a standard User Control (.ascx), NOT a custom rendered control.

वर्तमान कोड

Here is the class & event definition:

[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
    public event EventHandler OKClicked;

वर्तमान परिणाम

अब, जब मैं एएसपीएक्स पेज पर नियंत्रण पर डबल क्लिक करता हूं, तो निम्न बनाया जाता है:

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

मैं काफी उम्मीद नहीं कर रहा था! तो, मेरा सवाल है:

क्या UserControl के लिए डिफॉल्ट इवेंट को परिभाषित करना संभव है? क्या यह एक हैक है? यदि यह समर्थित नहीं है, तो क्या कोई कारण है?


Side Note: How do we put underscores in code? I cant seem to put and escape char in?

0
ro fr bn

2 उत्तर

यहां परीक्षण के बिना संभव उत्तर है (जैसे मार्टिन ने किया)।

परावर्तक में, आप देखेंगे कि DefaultEventAttribute स्वयं विरासत में रहने की अनुमति देता है। परावर्तक में, आप देखते हैं कि UserControl क्लास में लोड ईवेंट में यह डिफ़ॉल्ट ईवेंट सेट है।

तो संभावित कारण यह है कि भले ही आप OKClick की डिफ़ॉल्ट घटना के साथ अपने उपयोगकर्ता नियंत्रण को सजा रहे हों, वीएस अभी भी सोच रहा है कि डिफ़ॉल्ट ईवेंट लोड हो रहा है, क्योंकि इसे UserControl से विरासत में मिला है जिसका डिफ़ॉल्ट ईवेंट लोड है।

क्या हो रहा है पर बस एक उच्च स्तर का अनुमान लगाओ।

0
जोड़ा

ठीक है, मैंने इसे जांच लिया है, UserControl के बजाय WebControl से विरासत .. सभी ठीक काम किया।

ऐसा लगता है कि डैरेन कोप इस के लिए ताज लेता है! इनपुट के लिए धन्यवाद!

0
जोड़ा