Doppia conferma in uscita
Domanda
che sto cercando di fare in modo che l'utente viene richiesto di confermare l'uscita il mio programma in C #, ma per qualche ragione, se dicono "sì" Vorrebbero uscita, la finestra di conferma si solleva di nuovo. Non riesco a capire perché.
if (MessageBox.Show("Are you sure you want to exit?", "Confirm exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else { Application.Exit(); }
Soluzione
Ah, hai controllato la CloseReason
per l'evento FormClosing
? Penso che si potrebbe ottenere lo stesso evento per due motivi diversi (anche se non mi aspetto esattamente che ciò accada normalmente); controllare il FormClosingEventArgs
per vedere quali sono i parametri.
Altri suggerimenti
Utilizzare questo
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you sure you want to close?", "Infomate", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
Ah, ho capito come risolvere il problema. Ho rimosso l'Application.Exit (); evento dall'evento FormClosing, e si è trasferito in caso FormClosed. Tutto ora funziona.