2011-03-26 17 views
5

मुझे एक साधारण समस्या है: मेरे पास जीत-रूप/सी # में मुख्य रूप है। इसमें डेटाबेस के लिए एक सूची बॉक्स है।बाल प्रपत्र से मुख्य फॉर्म तक पहुंच

जब मैं एक बटन क्लिक करता हूं तो एक नया रूप बनाया जाता है।

जब मैं बच्चे के फॉर्म पर एक बटन क्लिक करता हूं, तो मैं मुख्य रूप में मौजूद एक विधि को कॉल करना चाहता हूं, जो कि उस बॉक्स को कॉल करने के लिए सूची बॉक्स को अपडेट करता है या वैकल्पिक रूप से जब बच्चे का फॉर्म बंद हो जाता है।

क्या यह संभव है ??

+0

क्या आप 'सहेजें' और 'लागू करें' बटन वाले एक संवाद बॉक्स को लागू करने का प्रयास कर रहे हैं? – manji

उत्तर

6

परिदृश्य 1: बाल रूप में बटन के क्लिक पर अभिभावक फॉर्म में एक विधि को कॉल करें।

बाल प्रपत्र में Event बनाएं। उस बटन को कुछ बटन क्लिक आदि पर बढ़ाएं। उस घटना को अपने अभिभावक फॉर्म में सदस्यता लें और उसमें माता-पिता की फ़ॉर्म विधि को कॉल करें।

परिदृश्य 2: बाल फॉर्म बंद होने पर अभिभावक रूप में एक विधि को कॉल करें।

FormClosed या FormClosing अभिभावक रूप में बाल प्रपत्र की घटना को संभालें और उसके अंदर माता-पिता की फ़ॉर्म विधि को कॉल करें।

ChildForm frm = new ChildForm(); 
frm.FormClosed += new FormClosedEventHandler(frm_FormClosed); 

void frm_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     //Call your method here. 
    } 
+0

बहुत बढ़िया ... धन्यवाद –

14

इसे प्राप्त करने के कई तरीके हैं, लेकिन यहां एक आसान तरीका है। तब, जब आप बच्चे रूप से मुख्य रूप में एक विधि कॉल करने की जरूरत है

ChildForm child = new ChildForm(); 
child.Show(this); // this calls the override that takes Owner parameter 

, इस तरह उपयोग कोड (मान लिया गया है: अपने मुख्य रूप में, जब आप बना सकते हैं और एक बच्चे के रूप को दिखाने के, तो वह ऐसा कर आपका मुख्य प्रपत्र प्रकार MainForm) की है:

MainForm parent = (MainForm)this.Owner; 
parent.CallCustomMethod(); 

एक अधिक जटिल तरीके जहां इसके इंटरफेस करने के लिए माता पिता के रूप के लिए एक संदर्भ में पास होता (या अधिक ठीक से, निर्भरता इंजेक्शन, के एक फार्म का उपयोग किया जाएगा) बाल रूप के निर्माता में। लेकिन उपरोक्त तरीका आपके उद्देश्यों के लिए सरल और संभवतः प्रभावी है (और वास्तव में निर्भरता इंजेक्शन का एक रूप है, जैसा कि)।

+1

आप 'शोडियलॉग (यह) का भी उपयोग कर सकते हैं;' - कोड एक ही तरीके से काम करेगा। – MusiGenesis

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