Manipulation bouton Annuler dans Oui / Non / Annuler Messagebox dans FormClosing Méthode

StackOverflow https://stackoverflow.com/questions/1252613

  •  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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top