2009-05-24 5 views
7

Utilizzo Microsoft Visual C# 2008 Express.Come aggiungo il codice al pulsante di uscita in un modulo C#?

Nella mia forma principale, c'è il pulsante X per chiudere il modulo in alto a destra. Come posso aggiungere codice a questo pulsante? Nel mio menu, ho un elemento "Esci" e ha il codice che pulisce e chiude i miei database. Come posso aggiungere lo stesso codice a questo pulsante se l'utente lo sceglie come modo per uscire?

Grazie!

-Adeena

risposta

12

L'utilizzo dell'evento FormClosing dovrebbe consentire di chiudere il modulo in qualsiasi modo.

0

Usa Chiuso evento della vostra homepage.

+0

è che "FormClosed" o "FormClosing" ? o non importa se tutto quello che sto facendo è qualcosa come la chiusura dei database ...? – adeena

+0

Spiacenti, errore di battitura: intendevo l'evento chiuso. Ma ho appena letto che è sostituito da FormClosed-Event da .NET 2.0 updwards –

7

Nella visualizzazione Struttura del modulo, all'interno della finestra Proprietà, selezionare il pulsante Eventi e scorrere fino agli eventi "FormClosed" e "FormClosing".

FormClosed viene chiamato dopo che il modulo è stato chiuso.

FormClosing viene chiamato prima che il modulo è chiuso e permette anche di annullare la chiusura, mantenendo la forma aperta:

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

FormClosing/FormClosed ti permette di guardare l'evento per quella forma che può coincidere con l'applicazione uscire. Tuttavia, c'è un altro evento che puoi collegare chiamato Application.ApplicationExit.

Nel metodo Main:

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

Questo codice catturerà l'utente fa clic sulla 'X' o usando Alt-F4 su un modulo per consentire di fare qualcosa. Ho dovuto usarlo perché avevo bisogno dell'azione per chiamare il mio evento di chiusura, e non lo chiamerei quando usavo l'evento FormClosing a causa di eventi di gara.

/// <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

Se si vuole chiedere all'utente "Sei sicuro di voler fare vicino questa forma?", Quindi utilizzare FormClosing, dove è possibile impostare Cancel = True e la forma rimarrebbe aperta.

Se si desidera chiudere alcune risorse solo quando il modulo è definitivamente chiuso, si utilizza l'evento FormClosed.

Se si ha il controllo dell'intero codice, non importa. Ma quello che non vuoi succedere è ripulire le risorse usando FormClosing quando l'altro gestore dell'evento manterrà il modulo aperto.

0

fare doppio clic sul pulsante di uscita in form'design poi semplicemente chiamare il metodo Dispose()

0

metodo di azione Modulo //

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(); 
}