2009-07-01 14 views
9

मेरे पास मेरे विंडोज़ फॉर्म पर एक कस्टम उपयोगकर्ता नियंत्रण है। इस नियंत्रण में कुछ लेबल हैं।उपयोगकर्ता नियंत्रण क्लिक - विंडोज़ फॉर्म

मैं अपने रूप में इन नियंत्रणों की एक सरणी को गतिशील रूप से प्रदर्शित करूँगा जिसमें डेटा के विभिन्न बिट्स होंगे।

जो मैं करने की कोशिश कर रहा हूं वह यह जानना है कि जब मैं उस पर क्लिक करता हूं तो कौन सा उपयोगकर्ता नियंत्रण चुना गया था।

यह तब काम करता है जब मैं उपयोगकर्ता नियंत्रण पर खाली स्थान पर क्लिक करता हूं, हालांकि, यदि मैं उपयोगकर्ता नियंत्रण पर किसी भी लेबल पर क्लिक करता हूं तो यह उपयोगकर्ता नियंत्रण क्लिक को पहचान नहीं पाएगा।

कोई भी विचार है कि मैं एक पूर्ण उपयोगकर्ता नियंत्रण कैसे कर सकता हूं, भले ही नियंत्रण पर एक लेबल क्लिक किया जा रहा हो?

यदि यह प्रश्न स्पष्ट नहीं है, या आपको अधिक जानकारी चाहिए, तो कृपया एक टिप्पणी छोड़ दें।

मैं इसे सी # में कर रहा हूं।

धन्यवाद!

उत्तर

11

उपयोगकर्ता नियंत्रण पर क्लिक नियंत्रण तब नहीं होगा जब उपयोगकर्ता नियंत्रण पर कोई अन्य नियंत्रण क्लिक किया जाता है। आपको प्रत्येक तत्व के क्लिक ईवेंट को मैन्युअल रूप से बाध्य करने की आवश्यकता है। आप उपयोगकर्ता नियंत्रण के codebehind पर एक साधारण पाश के साथ ऐसा कर सकते हैं: जब उपयोगकर्ता नियंत्रण पर कोई नियंत्रण क्लिक किया जाता है

foreach (Control control in Controls) 
{ 
    // I am assuming MyUserControl_Click handles the click event of the user control. 
    control.Click += MyUserControl_Click; 
} 

कोड workd के इस टुकड़े के बाद, MyUserControl_Click सक्रिय हो जाएगा।

+0

कमाल! यह पूरी तरह से मदद की। बहुत बहुत धन्यवाद! – CodeLikeBeaker

+1

धन्यवाद !!! कृपया ध्यान दें कि आपको नियंत्रणों के अंदर नियंत्रण के लिए एक रिकर्सिव एड/निकालना शामिल होना चाहिए (उदाहरण के लिए पैनल के अंदर नियंत्रण) –

+0

आपको अपने ईवेंट-विधि में ऑब्जेक्ट प्रकारों को भी देखना न भूलना चाहिए: 'सार्वजनिक शून्य MyUserControl_Click (ऑब्जेक्ट प्रेषक , EventArgs ई) {if (sender.GetType() लेबल है) {...}} '। अन्यथा आप आसानी से समस्याओं में भाग ले सकते हैं। – libjup

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

ध्यान रखें कि इस groupboxes, पैनल आदि "SameAsForm_Click" -EventHandler करने के लिए लेबल 'clickevents नहीं जोड़ दिया जाएगा।

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