2016-03-21 10 views
5

पर बाल नियंत्रण की घटना पर क्लिक करें मेरे पास एक विंडोज़ फॉर्म है, जिसमें एक फलक है, जिसमें विंडोज फॉर्म से व्युत्पन्न एक और कक्षा है। यह फलक के भीतर एक नियंत्रण के रूप में निहित है। इसमें अपने भीतर दो बटन हैं।अभिभावक नियंत्रण

मैं बच्चे के नियंत्रण की घटनाओं को मूल विंडो में सभी तरह से पारित करना चाहता हूं। उदाहरण के लिए, फलक में बाल विंडो में Cancel बटन है, जिसे इसे बंद करना है। मुझे अभिभावक नियंत्रण चाहिए, यानी, मुख्य विंडो भी बंद करने के लिए, लेकिन मैं बाल नियंत्रण के बटन क्लिक ईवेंट को कैसे रोक सकता हूं?

मैं बाल नियंत्रण को संशोधित कर सकता हूं, लेकिन केवल अगर इसे उचित तरीके से हासिल करने का कोई अन्य तरीका नहीं है, तो मैं इसे टालना चाहूंगा।

+0

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

+0

उपयोगकर्ता बाल नियंत्रण पर मौजूद बटनों पर क्लिक करेगा - बाल नियंत्रण पर कुछ घटनाओं के अलावा, कुछ कार्यों को मूल नियंत्रण द्वारा भी लिया जाना चाहिए, लेकिन मुझे यकीन नहीं है कि अभिभावक नियंत्रण को संकेत देने का सबसे अच्छा तरीका है और कि कुछ घटना बच्चे पर ट्रिगर की गई है। ये क्रिया सामान्य हो सकती है जैसे सभी रूपों को बंद करना, अधिक जटिल लोगों के लिए। लेकिन माता-पिता को यह पता होना चाहिए कि बाल नियंत्रण से जुड़े नियंत्रण पर एक घटना शुरू हो गई है। – user1173240

+0

जबकि आप सीधे बच्चे से मूल रूप से बातचीत कर सकते हैं, बच्चे के नियंत्रण से कुछ घटनाओं को बढ़ाने और माता-पिता के रूप में घटनाओं के लिए सदस्यता लेने के लिए बेहतर है। –

उत्तर

8

जबकि आप सीधे बच्चे से मूल रूप से बातचीत कर सकते हैं, तो बच्चे के नियंत्रण से कुछ घटनाओं को बढ़ाने और माता-पिता के रूप में घटनाओं के लिए सब्सक्राइब करना बेहतर होता है। बाल से

बढ़ाएं घटना:

public event EventHandler CloseButtonClicked; 
protected virtual void OnCloseButtonClicked(EventArgs e) 
{ 
    var handler = CloseButtonClicked; 
    if (handler != null) 
     handler(this, e); 
} 
private void CloseButton_Click(object sender, EventArgs e) 
{ 
    //While you can call `this.ParentForm.Close()` it's better to raise an event 
    OnCloseButtonClicked(e); 
} 

सदस्यता लें और जनक में उपयोग घटना:

//Subscribe for event using designer or in form load 
this.userControl11.CloseButtonClicked += userControl11_CloseButtonClicked; 

//Close the form when you received the notification 
private void userControl11_CloseButtonClicked(object sender, EventArgs e) 
{ 
    this.Close(); 
} 
+0

इसके लिए धन्यवाद। मैं जांचूंगा कि मेरे लिए बाल नियंत्रण को संशोधित करना संभव है या नहीं। – user1173240

+0

आपका स्वागत है :) –

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