2013-03-20 5 views
5

में कस्टम ईवेंट को मान्यता नहीं देता है मुझे VS2012 डिज़ाइनर के साथ समस्या हो रही है। मेरे पास एक उपयोगकर्ता नियंत्रण है जिसे मैंने डिज़ाइन किया है और इसमें एक टेक्स्ट बॉक्स (अन्य चीजों के साथ) है जहां उपयोगकर्ता आईपीवी 4, आईपीवी 6, या DNS दर्ज करने के लिए है। मुझे उस पाठ को मान्य (टेक्स्ट चेंजेड इवेंट) रिपोर्ट को मुख्य कार्यक्रम में वापस सत्यापित करने की आवश्यकता थी। निम्नलिखित कोड पर विचार करें:सी # डिज़ाइन कस्टम उपयोगकर्ता नियंत्रण

private bool addressError; 

public EventHandler ErrorChanged; 

public bool Error 
{ 
    get 
    { 
     return addressError; 
    } 
    set 
    { 
     if (this.Error != value) 
     { 
      addressError = value; 
      OnErrorChanged(this, EventArgs.Empty); 
     } 
    } 
} 

protected virtual void OnErrorChanged(object sender, EventArgs e) 
{ 
    if (ErrorChanged != null) 
    { 
     ErrorChanged(sender, e); 
    } 
} 

तो मैं मुख्य कार्यक्रम डिजाइनर के लिए ईवेंट हैंडलर जोड़ने (नियंत्रण नाम "कॉम"):

this.Com.ErrorChanged += new System.EventHandler(this.Com_ErrorChanged); 

समस्या मेरे पास है है कि हालांकि कोड वास्तव में काम करता है जैसा कि मैं चाहता था, डिजाइनर सोचता है कि ErrorChanged घटना नहीं है। सटीक संदेश यह रिपोर्ट

"प्रकार 'ModbusCom.Communications' 'ErrorChanged' नाम का कोई घटना नहीं है।" है

मैं त्रुटि को अनदेखा कर सकता हूं और डिजाइनर फॉर्म को ठीक से प्रदर्शित करता है। मैं प्रोग्राम चला सकता हूं और सबकुछ ठीक है, लेकिन समस्या को अनदेखा करने के लिए इसे कहना जारी रखना थोड़ा परेशान है। क्या यह हल करने के लिए मैं कुछ कर सकता हूं? मदद की सराहना की है!

+0

आप वास्तव में Modbus पर संवाद करने की कोशिश कर रहे हैं? (मैं बस सोच रहा हूँ) –

+0

हाँ, मैं हूं। टीसीपी/आईपी –

उत्तर

7

आप एक घटना के रूप में यह घोषित नहीं कर रहे हैं

बदलें:

public EventHandler ErrorChanged; 
में

:

public event EventHandler ErrorChanged; 
+2

पर मॉडबस आरटीयू सही है। इवेंट कीवर्ड का उपयोग न करके आप क्या कर रहे हैं, इवेंट हैंडलर प्रतिनिधि का एक उदाहरण बना रहा है जो एक सार्वजनिक क्षेत्र है। यह सी # कोड में वैसे ही काम करेगा, लेकिन यह आपको उन सभी ईवेंट हैंडलरों को ओवरराइड करने की अनुमति देगा जो इसकी सदस्यता ले रहे हैं यदि आप सदस्यता लेने या सदस्यता समाप्त करने के लिए + = या - = का उपयोग नहीं करते हैं। इवेंट कीवर्ड केवल आपको ईवेंट (+ =) जोड़ने या ईवेंट (- =) को ईवेंट पर ही हटाने की अनुमति देता है। –

+1

आह चेहरे। बहुत बहुत धन्यवाद। –

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