Manipulation bouton Annuler dans Oui / Non / Annuler Messagebox dans FormClosing Méthode
-
12-09-2019 - |
Question
Je mets un Oui / Non / Annuler Messagebox FormClosing Méthode de ma forme. et maintenant ce texte est la boîte de message: Voulez-vous enregistrer des données
Je ne suis pas profesional et ne pas savoir comment gérer si l'utilisateur a cliqué sur Annuler ?
Exactement le résultat de cliquer sur le bouton Annuler doit être la forme reste ouverte.
Comment empêcher la fermeture ma forme dans la méthode FormClosing ?
J'ai écrit à ce jour:;)
DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);
//...
else if (dr == DialogResult.Cancel)
{
???
}
S'il vous plaît Aide-moi à compléter mon code!
Merci
La solution
FormClosing a un paramètre booléen qui, si la valeur True lorsque la fonction retourne, annule la fermeture de la forme, IIRC.
EDIT: Par exemple,
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
// Set e.Cancel to Boolean true to cancel closing the form
}
Voir ici .
Autres conseils
En fait, je pense que vous manquez gestionnaire d'événements, oh vous ne pouvez pas tourner que même sans gestionnaire même. Vous devez ajouter un événement avec un gestionnaire d'événements comme celui-ci.
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);
}
Pardonnez-moi s'il y a des torts orthographes dans ce code parce que je n'ai pas écrit dans c # et copier coller ici. Je viens d'écrire dans ici. :)
Vous pourriez avoir quelque chose comme ce qui suit:
if(dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
//Save the data
}
Le code ci-dessus ne doit fermer le formulaire si vous choisissez oui ou non, et enregistre les données lorsque vous choisissez oui.
vous devriez essayer cette fonction
public DialogResult msgClose(string msg)
{
return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}
et utilisé comme celui-ci.
private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
if (conn.msgClose("Application close?") == DialogResult.No)
e.Cancel = true;
else
{
this.Close();
}
}
Vous pouvez essayer ceci:
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)
}
Si nécessaire, vous pouvez même faire pour le bouton No
et Cancel
clic en utilisant la classe DialogResult