Manipulación botón Cancelar en Sí / No / Cancel Messagebox en FormClosing Método

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

  •  12-09-2019
  •  | 
  •  

Pregunta

pongo un Sí / No / Cancel Messagebox en Método de mi forma FormClosing. y ahora se trata de texto cuadro de mensaje:? ¿Quieres para guardar los datos

No soy un profesional y no saber cómo manejar si el usuario hizo clic en Cancelar ? Exactamente el resultado de hacer clic en el botón Cancelar debe ser la forma permanezca abierta.
Cómo evitar el cierre de mi forma de método FormClosing?

he escrito hasta ahora:;)

DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);

//...
else if (dr == DialogResult.Cancel)
{
    ???
}

Por favor, ayúdame a completar mi código!
Gracias

¿Fue útil?

Solución

FormClosing tiene un parámetro booleano que, si se establece en True cuando la función regresa, se cancelará cerrar el formulario, IIRC.

EDIT: Por ejemplo,

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
    // Set e.Cancel to Boolean true to cancel closing the form
}

ve aquí .

Otros consejos

En realidad creo que se echa en falta controlador de eventos, oh no se puede activar a que, incluso sin un controlador de equilibrio. Debe añadir un evento con un controlador de eventos como este.

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); 
}

Perdóname si hay algunas injusticias ya existen en este código porque no he escrito en C # y copiar y pegar aquí. Me acabo de escribir aquí dentro. :)

Usted podría tener algo como lo siguiente:

if(dr == DialogResult.Cancel)
{
    e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
    //Save the data
}

El código anterior sólo debe cerrar el formulario si decide sí o no, y guardará los datos cuando se elige sí.

usted debe tratar esta función

public DialogResult msgClose(string msg)
{
     return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}

y se utiliza como éste.

private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
     if (conn.msgClose("Application close?") == DialogResult.No)
         e.Cancel = true;
     else
     {
         this.Close();
     }
}

Puede intentar esto:

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 es necesario mismo se puede hacer por el No y Cancel botón de clic mediante la clase DialogResult

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top