2010-05-25 12 views

उत्तर

31

FormClosed ईवेंट संभाल लें।

ऐसा करने के लिए, प्रॉपर्टी विंडो में ईवेंट टैब पर जाएं और इसके लिए हैंडलर जोड़ने के लिए FormClosed ईवेंट को डबल-क्लिक करें।

फिर आप अपना कोड जेनरेट MyForm_FormClosed हैंडलर में डाल सकते हैं।

आप OnFormClosed विधि को ओवरराइड करके भी ऐसा कर सकते हैं; ऐसा करने के लिए, कोड विंडो में override onformcl टाइप करें और IntelliSense से OnFormClosed टाइप करें।

यदि आप फॉर्म को बंद होने से रोकने में सक्षम होना चाहते हैं, तो FormClosing ईवेंट को इसके बजाय संभाल लें, और e.Canceltrue पर सेट करें।

+0

कोई "बंद" घटना, केवल "FormClosed" है - काफी unintuitive –

+2

@hello_earth: एक 'Closed' घटना हुई थी नेट 1 में; इसे विभिन्न मुद्दों के कारण .NET 2.0 में बदल दिया गया था। मूल 'बंद' घटना अभी भी संगतता के लिए है, लेकिन छुपा हुआ है। – SLaks

3

अपने फॉर्म के लिए FormClosed ईवेंट में एक ईवेंट हैंडलर जोड़ें।

public class Form1 
{ 

    public Form1() 
    {  
     this.FormClosed += MyClosedHandler; 
    } 

    protected void MyClosedHandler(object sender, EventArgs e) 
    { 
     // Handle the Event here. 
    } 
} 
+0

उस घटना को – Ian

+0

@Ian - इसे ठीक कर दिया गया है। –

8

WinForms में दो घटनाएं हैं जिन्हें आप देखना चाहते हैं।

पहला, FormClosing ईवेंट, फॉर्म वास्तव में बंद होने से पहले होता है। इस घटना में, आप अभी भी फॉर्म के वर्ग में किसी भी नियंत्रण और चर का उपयोग कर सकते हैं। आप e.Cancel = true; को सेट करके बंद फॉर्म को भी रद्द कर सकते हैं (जहां eSystem.Windows.Forms.FormClosingEventArgsFormClosing पर दूसरा तर्क के रूप में भेजा गया है)।

दूसरा, FormClosed ईवेंट, फॉर्म बंद होने के बाद होता है। इस बिंदु पर, आप फ़ॉर्म के किसी भी नियंत्रण तक नहीं पहुंच सकते हैं, हालांकि आप अभी भी चर पर सफाई कर सकते हैं (जैसे बंद संसाधन प्रबंधित संसाधन)।

+2

'फॉर्मक्लोसिंग' और 'फॉर्मक्लोज्ड' का उपयोग करने के लिए इसे 'बंद करने' और 'बंद' के रूप में अपडेट करने के लिए अपडेट किया गया है। – Powerlord

+1

प्लस 2 यह समझने के लिए कि आपने इसे और किस से अपडेट किया है। – AidanO

+0

क्या यह निश्चित रूप से "सभी चर" के साथ-साथ फ़ॉर्म पर नियंत्रण भी है?मैंने अभी कोशिश की है और फॉर्म क्लास के 2 फ़ील्ड (फॉर्म से विरासत में मिला है) का संदर्भ दिया है और उन्हें ठीक से एक्सेस किया जा सकता है - फॉर्मक्लोज्ड इवेंट – PandaWood

2
public FormName() 
{ 
     InitializeComponent(); 
     this.FormClosed += FormName_FormClosed; 
} 

private void FormName_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) 
{ 
   //close logic here 
} 
15

या किसी अन्य विकल्प System.Windows.Forms.Form से OnFormClosed() या OnFormClosing() पद्धतियों ओवरराइड करने के लिए है।

चाहे आपको इस विधि का उपयोग करना चाहिए, समस्या के संदर्भ पर निर्भर करता है, और जब फॉर्म को कई बार वर्गीकृत किया जाएगा और उन्हें सभी को एक ही कोड करने की आवश्यकता होगी तो अधिक उपयोग योग्य होगा।

घटनाएं एक या दो उदाहरणों के लिए अधिक उपयोगी हैं यदि आप एक ही काम कर रहे हैं।

public class FormClass : Form 
{ 
    protected override void OnFormClosing(FormClosingEventArgs e) 
    { 
     base.OnFormClosing(e); 
     // Code 
    } 
} 
+7

** और 'base.OnFormClosing (e) '। ** – SLaks

+1

मैं स्वाभाविक रूप से ऐसा करता हूं और इसे // कोड टिप्पणी का हिस्सा मानता हूं। लेकिन वास्तव में आप सही हैं, शायद कम अनुभवी के लिए वहां होना चाहिए। धन्यवाद स्लाक्स। – Ian

-3

सिंटेक्स:

form_name.ActiveForm.Close(); 

उदाहरण:

{ 
     Form1.ActiveForm.close(); 
    } 
संबंधित मुद्दे