Manipulación botón Cancelar en Sí / No / Cancel Messagebox en FormClosing Método
-
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
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