2012-05-24 6 views
10

मैं किसी अन्य रूप से किसी फ़ॉर्म के चर का उपयोग करना चाहता हूं। मेरे मुख्य रूप के अंदर एक बटन पर क्लिक करने पर, मैं अपना मुख्य रूप माता-पिता के रूप में सेट करना चाहता हूं, फिर एक और फॉर्म (बाल रूप) लाऊंगा जिसमें मैं मुख्य रूप के चर का उपयोग करूंगा। मेरा क्लिक हैंडलर निम्नानुसार है:अभिभावक फेंक अपवाद के रूप में सेट करें "शीर्ष-स्तर नियंत्रण को नियंत्रण में जोड़ा नहीं जा सकता"

private void btnSystem_Click(object sender, EventArgs e) 
{ 
    Form_EnterPassword EP = new Form_EnterPassword(); 
    EP.Parent = this;  //error: Top-level control cannot be added to a control 
    EP.ShowDialog(); 
} 

यह किसी भी त्रुटि के बिना ठीक संकलित करता है। हालांकि, जब मैं मुख्य रूप चलाता हूं और सिस्टम बटन पर क्लिक करता हूं, तो यह मुझे अपवाद फेंकता है। मैं एक ही बटन के साथ किसी अन्य कोड (मेरा नहीं) में कुछ ऐसा करता हूं, और कोई त्रुटि नहीं होती (केवल मुख्य रूप को मूल के रूप में सेट करने के साथ)।

मैं क्या गलत कर रहा हूं? क्या मेरे मुख्य कोड में कुछ ऐसा है जो इसका कारण बनता है?

+0

मैंने पढ़ा है और कुछ भी नहीं मिला है जो मदद करता है। ऐसे ही कोड हैं, जिनके पास समान अभिभावक सेटिंग घोषणा है। – CaTx

+0

जब मैं अभिभावक सेट करता हूं तो अपवाद ठीक से फेंक दिया जाता है। – CaTx

उत्तर

16

EP.ShowDialog(this) का उपयोग करने का सबसे अच्छा तरीका होगा और बाद में Owner संपत्ति का उपयोग करें।

+0

मैं बदल गया। ParentForm; यह मुझे यह त्रुटि फेंकता है: संपत्ति या अनुक्रमणिका 'System.Windows.Forms.ContainerControl.ParentForm' को असाइन नहीं किया जा सकता - यह केवल – CaTx

+3

पढ़ा जाता है। माता-पिता के बारे में भूल जाओ। बस 'मालिक' का उपयोग करें। –

+0

मैं इसे आज़माउंगा। धन्यवाद। – CaTx

10

आपको EP.TopLevel संपत्ति को गलत पर सेट करने की आवश्यकता है। यह आपको माता-पिता को सेट करने देगा।

Further reading.

मामले में आप केवल एक और रूप के चर और नियंत्रणों को एक्सेस करना चाहते हैं, तो शायद आप इसे अन्य तरीकों से, तक पहुँचने के एक जनक संबंध गर्त नहीं कर सकते।

+1

EP.TopLevel = false -> यह मदद नहीं करता है। – CaTx

+0

धन्यवाद, इसने मुझे फॉर्म को अन्य फॉर्म – oleksa

+0

में नियंत्रण के रूप में दिखाने में मदद की, मुझे लगता है कि इसे सही उत्तर के रूप में स्वीकार किया जाना चाहिए था। यह मेरे लिए काम किया। धन्यवाद ;) – Javid

1

ठीक है, जाहिरा तौर पर जिस तरह से यह करने के लिए

Form_Child.ShowDialog(this) 

कॉल करने के लिए है और फिर मैं

FromParent_aVariable = ((Form_Parent)this.Owner).aVariable; 

या अगर मैं तो नाम स्थान गुण में aVariable परिभाषित

FromParent_aVariable = NameSpace.Properties.Settings.Default.aVariable; 
कॉल कर सकते हैं

दो तरीके हैं।

-1

इस तरह से लिखते हुए, माता-पिता के रूप में संवाद प्रदर्शित किया गया।

Form_Child.StartPosition = FormStartPosition.CenterParent; 
    Form_Child.ShowDialog(this); 
संबंधित मुद्दे

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