2009-07-14 18 views
10

सी #/.NET 3.5/WinFormsएक मॉडल संवाद से मॉडल संवाद - दूसरा बंद होने पर बंद करें - क्यों?

मेरे पास एक ऐसा फॉर्म है जो एक मोडल संवाद फ़ॉर्म खोलता है जो एक और मोडल संवाद प्रपत्र खोलता है। आंतरिक संवाद फ़ॉर्म में ठीक है और रद्द करें बटन और इसके AcceptButton और CancelButton क्रमशः उनके लिए सेट हैं।

जब मैं एंटर दबाता हूं या आंतरिक संवाद में ठीक क्लिक करता हूं, तो बाहरी संवाद भी बंद हो जाता है। मैं नहीं देख सकता कि मैं यह कहां कर रहा हूं - क्या यह अपेक्षित व्यवहार है?

मैं कोड की आपूर्ति कर सकता हूं लेकिन मैं इसे अपनाना नहीं चाहता था।

+0

बाहरी संवाद सामान्य रूप से चल रहा है [.ShowDialog के माध्यम से]? डीबगर में कॉल के बाद आपको ब्रेकपॉइंट डालने में सक्षम होना चाहिए। लेकिन मुझे लगता है कि आपने यह नहीं पूछा होगा कि आप क्या कर रहे हैं इसके लिए कुछ सूक्ष्मता नहीं थी ... –

+0

हाँ, मैं कोड के माध्यम से कदम उठाऊंगा लेकिन यह कुछ भी मारने के बिना आंतरिक से बाहरी तक चली गई। – serialhobbyist

उत्तर

17

ऐसा इसलिए होता है क्योंकि ShowDialog कॉल इसके स्वामी के राज्य को भी संशोधित करता है।

ऐसा होने से रोकने के लिए, आपको दूसरा संवाद करने के लिए ShowDialog कॉल के बाद DialogResult.None करने के लिए पहले मॉडल संवाद के DialogResult रीसेट करने की आवश्यकता:

private void Button1_Click(object sender, EventArgs e) 
{ 
    InnerDialog inner = new InnerDialog() 
    DialogResult innerResult = inner.ShowDialog(this); 
    this.DialogResult = DialogResult.None; 
} 

यह एक लंबे समय से खड़ी मुद्दा रहा है (this देखना पद)।

+0

यही वह है। मुझे लगा कि मैं बहुत समय पहले इस पर हिट करूंगा लेकिन मुझे यह नहीं मिला और Google ने मदद नहीं की। समस्या सुलझ गयी। बहुत बहुत धन्यवाद। – serialhobbyist

+0

शायद यह तय है? मेरे पास .NET 3.5 SP1 है और * इस * व्यवहार को नहीं देखते हैं। – NascarEd

+0

संभवतः ऐसा। मैंने अभी कोशिश की है .Net 3.5 SP1 और व्यवहार नहीं मिला। मैं निश्चित रूप से यह नेट 2.0 पर था। – adrianbanks

0

मैंने इस पोस्ट को तब तक पूरा किया जब तक कि मुझे यह पोस्ट नहीं मिला। इसे .NET 4 में तय नहीं किया गया है।

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