2009-05-24 10 views
7

मैं माइक्रोसॉफ्ट विजुअल सी # 2008 एक्सप्रेस का उपयोग कर रहा हूं।मैं सी # फॉर्म में निकास बटन में कोड कैसे जोड़ूं?

मेरे मुख्य रूप में, एक्स बटन ऊपर दाईं ओर फ़ॉर्म को बंद करने के लिए है। मैं इस बटन में कोड कैसे जोड़ूं? मेरे मेनू में, मेरे पास "बाहर निकलें" आइटम है और इसमें कोड है जो मेरे डेटाबेस को साफ़ और बंद कर देता है। यदि उपयोगकर्ता इसे बाहर निकलने के तरीके के रूप में चुनता है तो मैं इस बटन पर एक ही कोड कैसे जोड़ूं?

धन्यवाद!

-Adeena

उत्तर

12

फॉर्मक्लोसिंग ईवेंट का उपयोग फॉर्म को बंद करने का कोई भी तरीका पकड़ना चाहिए।

0

उपयोग आपकी WinForm के बंद घटना।

+0

कहते हैं कि "FormClosed" या "FormClosing" ? या इससे कोई फर्क नहीं पड़ता कि मैं जो कुछ कर रहा हूं वह डेटाबेस बंद करने जैसी चीजें हैं ...? – adeena

+0

क्षमा करें, टाइपो: मेरा मतलब बंद-घटना था। लेकिन मैंने अभी पढ़ा है कि इसे .NET 2.0 अपडेट से फॉर्मक्लोज्ड-इवेंट द्वारा प्रतिस्थापित किया गया है –

7

अपने फॉर्म के लिए डिज़ाइन व्यू में, प्रॉपर्टी विंडो में, ईवेंट बटन का चयन करें और "फॉर्मक्लोज्ड" और "फॉर्मक्लोसिंग" ईवेंट पर स्क्रॉल करें।

प्रपत्र बंद होने के बाद फॉर्मक्लोज्ड कहा जाता है। पहले प्रपत्र बंद कर दिया है

FormClosing कहा जाता है और यह भी प्रपत्र खुला रखते हुए, आप पास रद्द करने के लिए अनुमति देता है:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    e.Cancel = true; 
} 
0

FormClosing/FormClosed आपको लगता है कि रूप है जो आवेदन के साथ मेल खाना सकता है के लिए घटना को देखने के सुविधा देता है बाहर निकलने। हालांकि, एक और घटना है जिसे आप एप्लिकेशन कहा जा सकता है। एप्लीकेशन एक्सटिट।

अपने मुख्य विधि में:

Application.ApplicationExit += Application_ApplicationExit; 

... 

private static void Application_ApplicationExit(object sender, EventArgs e) { 

    // do stuff when the application is truly exiting, regardless of the reason 

} 
0

इस कोड 'एक्स' या एक फार्म पर Alt-F4 का उपयोग करने पर उपयोगकर्ता क्लिक पर कब्जा आप कुछ करने के लिए अनुमति देने के लिए होगा। मुझे इसका इस्तेमाल करना पड़ा क्योंकि मुझे अपने समापन कार्यक्रम को कॉल करने के लिए कार्रवाई की आवश्यकता थी, और रेसिंग घटनाओं के कारण फॉर्मक्लोसिंग इवेंट का उपयोग करते समय इसे कॉल नहीं किया जाएगा।

/// <summary> 
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox 
/// and forces it to call MyClose() instead of Application.Exit() as it would have. 
/// This fixes issues where the threads will stay alive after the application exits. 
/// </summary> 
public const int SC_CLOSE = 0xF060; 
public const int WM_SYSCOMMAND = 0x0112; 
protected override void WndProc(ref System.Windows.Forms.Message m) 
{ 
    if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE) 
     MyClose(); 

    base.WndProc(ref m); 
} 
1

आप उपयोगकर्ता पूछना चाहते हैं तो, FormClosing का उपयोग आप Cancel = True सेट कर सकते हैं जहां और फार्म खुला रहेगा "क्या आप वाकई इस फार्म पास करना चाहते हैं?",।

यदि आप निश्चित रूप से बंद होने पर कुछ संसाधन बंद करना चाहते हैं, तो आप FormClosed ईवेंट का उपयोग करें।

यदि आप पूरे कोड के नियंत्रण में हैं, तो इससे कोई फर्क नहीं पड़ता। लेकिन आप जो नहीं करना चाहते हैं वह FormClosing का उपयोग करके संसाधनों को साफ करना है जब ईवेंट के दूसरे हैंडलर फॉर्म को खुले रखेंगे।

0

डबल form'design में बाहर निकलें बटन क्लिक करें फिर बस निपटान() विधि

0

फार्म कार्रवाई विधि //

protected override void OnFormClosing(FormClosingEventArgs e) 

      { 
      base.OnFormClosing(e); 

      if (e.CloseReason == CloseReason.WindowsShutDown) return; 

       switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo)) 
        { 
         case DialogResult.No: 
          e.Cancel = true; 
          break; 
        default: 
          break; 
        } 
     } 
0
You can use form closing events choose or set closing event in properties window  
You can add dialog conditions based on what task you want to perform before closing form 

private void Form1_FormClosing(object sender,FormClosingEventArgs e) 
{ 
Application.Exit(); 
//you can also use Application.ExitThread(); 
}