2012-03-13 23 views
7

मेरे पास गेमबटन नामक उपयोगकर्ता नियंत्रण है जिसमें इसके अंदर एक लेबल है। जब मैं अपने फॉर्म में उपयोगकर्ता नियंत्रण जोड़ता हूं, और उस पर एक क्लिक इवेंट जोड़ता हूं, तो जब आप कस्टम बटन की पृष्ठभूमि पर क्लिक करते हैं तो यह ट्रिगर होता है, लेकिन लेबल में टेक्स्ट नहीं? उपयोगकर्ता नियंत्रण कोड के अंदर क्लिक ईवेंट का एक गुच्छा जोड़ने के बिना मैं इसे कैसे ठीक करूं?नियंत्रण नियंत्रण के अंदर पाठ पर क्लिक करते समय उपयोगकर्ता नियंत्रण क्लिक नहीं कर रहा है?

संपादित करें: यूआई ढांचे:

+0

यूआई फ्रेमवर्क (Winforms, WPF, वेबफ़ॉर्म, MVC)? –

+0

माफ करना, WinForms – Oztaco

+0

इसके अलावा, कृपया टैग शामिल होने से बचाया आपके प्रश्न के साथ कुछ भी करने के लिए कुछ भी नहीं है (उदाहरण के लिए विजुअल-स्टूडियो) –

उत्तर

10

WinForms मैं तुम्हें ठीक से समझ रहा है, तो अपने GameButton usercontrol उन्हें क्लिक करने पर, लेकिन लेबल पर क्लिक किया जाता है जब नहीं ईवेंट सक्रिय करेगा - और आप दोनों चाहते हैं। ऐसा इसलिए है क्योंकि लेबल (नियंत्रण) पृष्ठभूमि के शीर्ष पर है। इसलिए, आपको क्लिक लेबल के साथ अपने लेबल को पंजीकृत करने की आवश्यकता है। यह पृष्ठ पर प्रत्येक नियंत्रण के लिए डिजाइनर या प्रोग्रामेटिक रूप से मैन्युअल रूप से किया जा सकता है।

आप UserControl में हर नियंत्रण करना चाहते हैं, UserControl के OnLoad इवेंट में डाल और आप हर नियंत्रण के लिए एक ही क्लिक करें घटना का उपयोग कर सकते हैं:

foreach(Control c in this.Controls){ 
    c.Click += new EventHandler(yourEvent_handler_click); 
} 

public void yourEvent_handler_click (object sender, EventArgs e){ 
    //whatever you want your event handler to do 
} 

संपादित करें: सबसे अच्छा तरीका है बनाने के लिए है उपयोगकर्ता नियंत्रण में ईवेंट हैंडलर संपत्ति पर क्लिक करें। इस तरह, हर बार जब आप अपने उपयोगकर्ता नियंत्रण में एक क्लिक ईवेंट जोड़ते/हटाते हैं, तो यह स्वचालित रूप से उपयोगकर्ता नियंत्रण में सभी नियंत्रणों को जोड़ता/हटा देता है।

आशा इस मदद करता है:

public new event EventHandler Click { 
     add { 
      base.Click += value; 
      foreach (Control control in Controls) { 
       control.Click += value; 
      } 
     } 
     remove { 
      base.Click -= value; 
      foreach (Control control in Controls) { 
       control.Click -= value; 
      } 
     } 
    } 

यह एक और post के अनुसार है!

+0

मैं डिजाइनर में नियमित बटन के साथ अपने कस्टम बटन पर क्लिक ईवेंट जोड़ने में सक्षम होना चाहता था, लेकिन वे – Oztaco

+0

लेबल को प्रभावित नहीं करते हैं, मुझे यकीन नहीं है कि मैं @EfeOzturkoglu को समझता हूं। आप चाहते हैं कि आपका उपयोगकर्ता नियंत्रण ऐसा हो जैसे कि यह एक नियमित बटन था जहां आप इसे एक ईवेंट हैंडलर के साथ कहीं भी क्लिक कर सकते हैं? – ImGreg

+0

हाँ, जैसे मैं नियंत्रण में एक हैंडलर और प्रत्येक बार इसके अंदर लेबल जोड़ना नहीं चाहता हूं, जब भी मैं – Oztaco

0

"सक्षम" अपने लेबल की संपत्ति "झूठे, तो माउस की घटनाओं उपयोगकर्ता नियंत्रण में काम करेंगे सुनिश्चित करें।

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