2008-12-27 13 views
9

मुझे लगता है एक WinForm के मालिक .Owner संपत्ति के माध्यम से या अतिभारित विधि में मालिक पारित करके स्पष्ट रूप से सेट किया जा सकता है ShowDialog (IWin32Window मालिक)ओवनर संपत्ति और शोडियलॉग (IWin32Window मालिक) के बीच अंतर?

मुझे समझ में क्यों इन तरीकों अलग व्यवहार जब प्रदर्शन में असमर्थ हूँ एमडीआई फॉर्म के साथ काम कर रहा है।

मैंने एक MDIParent और MDIChild बनाया है।

मेरे पास एक साधारण Winform MyDialogBox भी है जो लोड पर अपने मालिक को प्रदर्शित करता है।

MessageBox.Show("Dialog's owner is " + this.Owner.Name); 

विधि एक - का भार विधि में वैकल्पिक रूप से, - MDIChild का भार में मैं निम्नलिखित कोड है, जो MyDialogBox के मालिक का कारण बनता है करने के लिए सेट की है, हो MDIChild

MyDialogBox box = new MyDialogBox(); 
box.Owner = this; // Set owner as MDIChild 
box.ShowDialog(); 

विधि बी MDIChild मैं निम्नलिखित कोड है, जो MyDialogBox के मालिक का कारण बनता है लिए सेट किया जा करने के लिए है MDIParent

MyDialogBox box = new MyDialogBox(); 
box.ShowDialog(this); // Pass MyMDIChild as owner 

मैं भी निम्नलिखित here

पढ़ केवल एमडीआई माता पिता के फार्म एक और रूप के मालिक हैं, यह एक एमडीआई बच्चे, एक मॉडल संवाद या एक रूप जहां माता-पिता के मालिक परम के रूप में स्थापित किया गया था हो सकता है।

यदि ऐसा है तो विधि ए को बिल्कुल काम नहीं करना चाहिए, है ना?

मुझे क्या याद आ रही है? विधि बी ने स्वामी को MDIChild पर क्यों सेट नहीं किया है?

+0

इसे वीबी 6 में करने का प्रयास करें और देखें कि यह आपके द्वारा प्रदान किए गए लिंक से मेल खाता है या नहीं। अगर ऐसा होता है, तो मुझे लगता है - ढांचे में एक बग है। – shahkalpesh

+0

वीबी 6 के बारे में निश्चित नहीं है लेकिन वीबीएनईटी सी # – Preets

उत्तर

4

परावर्तक का उपयोग कर इन 2 विकल्पों में से मतभेद को देखते हुए, ऐसा लगता है कि वे एक अलग कार्यान्वयन है: box.Owner = this सिर्फ आंतरिक मालिक क्षेत्र के लिए इस बात का मान असाइन करें। हालांकि, जब ShowDialog(IWin32Window) बुला, कार्यान्वयन निम्नलिखित कॉल करता है, मान निर्दिष्ट करने से पहले:

owner = ((Control) owner).TopLevelControlInternal; 

यह MDIParent का काम हो सकती है।

(नोट: मैं एमडीआई के संबंध में एक विशेषज्ञ होने से बहुत दूर हूं, इसलिए मैं यहां गलत हो सकता हूं)।

+2

दिलचस्प तरीके से व्यवहार करता है। क्यों एमएस चाहता है कि दोनों व्यवहार करने के लिए मुझे आश्चर्यचकित करें। – Preets

+0

हां यह वास्तव में अजीब है। मुझे नहीं लगता कि आप एमडीआई माता-पिता के अलावा किसी अन्य मालिक को क्यों सेट करना चाहते हैं। विचार यह है कि जब उपयोगकर्ता एमडीआई फॉर्म पर क्लिक करता है, तो मोडल डायलॉग सबसे ज्यादा दिखाया जाएगा। अन्यथा ऐसा लगता है कि एमडीआई पैरेंट लॉक/क्रैश हो गया है। – Marc

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