2011-04-20 10 views
5

मेरे पास दो रूप हैं।सी # शोडियलॉग अभिभावक फॉर्म शून्य है

LoadWorkstationFile उपयोगकर्ताओं को उस आईडी के लिए संकेत देता है जिसे वे लोड करना चाहते हैं।

DisplayDataForm पिछली स्क्रीन पर चयनित आईडी का डेटा प्रदर्शित करता है।

DisplayDataForm वे एक विकल्प पर क्लिक कर सकते हैं नए डेटा लोड करने के लिए है, जो एक ShowDiaglog रूप LoadDataForm कॉल में:

private void openToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    var answer = MessageBox.Show("Do you wish to save the current work file before continuing?", "Confirmation", 
           MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); 
    if (answer == DialogResult.Cancel) 
    return; 
    if (answer == DialogResult.Yes) 
    SaveWorkFile(); 
    var prevworkstationid = Configuration.WorkstationId; 
    var lw = new LoadWorkstationFile(); 
    lw.ShowDialog(this); 
    if (Configuration.WorkstationId != prevworkstationid) 
    { 
    LoadData(); 
    } 

} 

आप देख सकते हैं, मैं उन्हें फिर से के रूप में ही स्क्रीन के साथ उत्साह रहा पहले।

LoadWorkstationFile यह निम्नलिखित कोड है में:

if (this.Parent == null) 
    { 
    var sc = new ScanCheck(); 
    sc.Show(); 
    this.Hide(); 
    } 

आरंभिक लोड सब कुछ ठीक है। जब मैं डेटा को दोबारा लोड करना चाहता हूं तो यह लोड हो गया है, मैं लोडवॉर्स्टेशन फ़ाइल स्क्रीन के कारण 2 के साथ समाप्त होता हूं क्योंकि माता-पिता हमेशा शून्य के बराबर होते हैं।

क्या मेरे पास गलत विचार है? क्या माता-पिता डिस्प्लेडाटाफॉर्म होना चाहिए जब इसे कॉल किया जाए .howDialog?

सामान्य रूप से धन्यवाद।

उत्तर

15

आप ShowDialog के निर्माता में स्थापित कर रहे हैं क्या Parent

के बजाय Owner की जाँच करनी चाहिए मालिक संपत्ति है। जो फ़ॉर्म को बताता है कि अन्य रूप "इसका" है। माता-पिता (जैसा मारियो द्वारा इंगित किया गया है) ने नियंत्रण के लिए स्वामित्व संबंधों का वर्णन किया है।

इसलिए आप अपना कोड बदलना चाहिए:

if (this.Owner == null) 
    { 
    var sc = new ScanCheck(); 
    sc.Show(); 
    this.Hide(); 
    } 

और यह काम करना चाहिए।

+0

एमएसडीएन डॉक्टर की पहली नज़र में मुझे उस संपत्ति को नहीं मिला, लेकिन बाद में मैंने अपनी टिप्पणी अपडेट की ;-) –

+0

@ मारियो द स्पून - :) अच्छा पुराना "आरटीएफएम"।Intellitrace, intellisense, और सामान्य ज्ञान के लिए प्रोग्रामिंग के देवताओं का शुक्रिया :) मुझे स्वीकार करना होगा कि मुझे इस संपत्ति का उपयोग करने से पहले इंटेलिजेंस से सत्यापित करना था, मैंने इस संपत्ति का उपयोग लाखों बार – NightDweller

+0

@ नाइटडवेलर गरीब मेरे पास अब एक नया विकास वातावरण है (WinWord) और कोड के बजाए स्पेसिफिकेशन लिखना है ... तो इसमें उस लक्जरी नहीं थे :-( –

2

अभिभावक नियंत्रण से विरासत में प्राप्त एक संपत्ति है जिसका उपयोग एम्बेडिंग संबंधों का वर्णन करने के लिए किया जाता है (एक लेबल माता-पिता के रूप में है)।

मुझे नहीं लगता कि यह ShowDialog() का उपयोग करते समय सेट है।

मुझे लगता है कि मालिक जांचने के लिए सही संपत्ति है।

hth

मारियो

0

जब से तुम lw.ShowDialog(this) में माता पिता के रूप DisplayDataForm गुजर रहे हैं; DisplayDataForm दूसरी बार कॉल करते समय LoadWorkstationFile फ़ॉर्म का अभिभावक है।

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