Manipolazione Cancel Button nella Sì / No / Annulla Messagebox nel metodo FormClosing

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

  •  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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top