Manipolazione Cancel Button nella Sì / No / Annulla Messagebox nel metodo FormClosing
-
12-09-2019 - |
Domanda
Ho messo un Sì / No / Annulla Messagebox in FormClosing Metodo della mia forma. e ora questo è un testo di dialogo Messaggio: Volete salvare dati
Non sono un profesional e non sanno come gestire se l'utente fa clic su Annulla ?
Esattamente il risultato di cliccando su Annulla pulsante deve essere la forma rimangono aperti.
Come impedire la chiusura la mia forma in FormClosing metodo
ho scritto finora:;)
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);
//...
else if (dr == DialogResult.Cancel)
{
???
}
Si prega di aiutarmi a completare il mio codice!
Grazie
Soluzione
FormClosing ha un parametro booleano che, se impostato su true quando la funzione restituisce, si annulla la chiusura del modulo, IIRC.
EDIT: Per esempio,
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
// Set e.Cancel to Boolean true to cancel closing the form
}
Vedi qui .
Altri suggerimenti
In realtà penso che non trovi il gestore di eventi, oh non si può girare a che, anche senza un gestore nemmeno. È necessario aggiungere un evento con un gestore di eventi come questo.
private void myform_Closing(object sender, FormClosingEventArgs e)
{
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning)
if (dr == DialogResult.Cancel)
{
e.Cancel = true;
return;
}
else if (dr == DialogResult.Yes)
{
//TODO: Save
}
}
//now add a default constructor
public myform() // here use your form name.
{
this.FormClosing += new FormClosingEventHandler(myform_Closing);
}
Perdonami se ci sono alcuni torti ortografia in questo codice, perché non l'ho scritto in C # e copia incolla qui. Ho appena scritto qui. :)
Si potrebbe avere qualcosa di simile al seguente:
if(dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
//Save the data
}
Il codice di cui sopra dovrebbe solo chiudere il modulo se si sceglie sì o no, e salvare i dati quando si sceglie di sì.
si dovrebbe provare questa funzione
public DialogResult msgClose(string msg)
{
return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}
e utilizzato come questo.
private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
if (conn.msgClose("Application close?") == DialogResult.No)
e.Cancel = true;
else
{
this.Close();
}
}
Si può provare questo:
if (MessageBox.Show("Are you sure you want to quit?", "Attention!!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == DialogResult.Yes)
{
//this block will be executed only when Yes is selected
MessageBox.Show("Data Deleted", "Done", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
//this block will be executed when No/Cancel is selected
//the effect of selecting No/Cancel is same in MessageBox (particularly in this event)
}
Se necessario lo stesso si può fare per la No
e Cancel
Button clic utilizzando classe DialogResult