Problemas con el Formulario.DialogResult
-
12-11-2019 - |
Pregunta
private void mnuCustomerAdd_Click(object sender, EventArgs e)
{
CustomerForm frmCust = new CustomerForm("Add A New Customer");
int index = lstCustomers.SelectedIndex;
if (index != -1)
frmCust.CustomerData = new Customer(customerMngr.GetCustomer(index).ContactData);
MessageBox.Show("dev1");
DialogResult dr = frmCust.ShowDialog();
if (dr == DialogResult.OK)
{
MessageBox.Show("dev2");
if (frmCust.ReadInput())
{
MessageBox.Show("dev3");
customerMngr.AddCustomer(frmCust.CustomerData);
}
else
MessageBox.Show("Please supply all necessary fields with the correct information");
}
UpdateCustomerList();
}
No entiendo lo que estoy haciendo mal aquí, quiero ejecutar las sentencias condicionales si el usuario pulsa ACEPTAR en el Formulario que aparece en frmCust.ShowDialog()
.En el momento en el que sólo se puede obtener a "dev1".
Solución
Tal vez el cuadro de diálogo no se ajuste el resultado del diálogo.Asegúrese de que sus botones ACEPTAR y Cancelar tienen sus DialogResult
propiedades de conjunto de lo que usted espera.
Otros consejos
Asegúrese de asignar correctamente DialogResult la propiedad de la Form
antes de cerrar.Por lo que se devuelve como valor de retorno de ShowDilaog()
de la llamada.
Hay otra opción, es utilizar AcceptButton y CancelButton, con el fin de manejar correspondiente Enter
y Cancel
pulsación de tecla.
Coloque un punto de interrupción (F9) en la línea:
if (dr == DialogResult.OK)
Cuando se cierra el cuadro de diálogo, tendrá la posibilidad de examinar lo que se establece dr
.
Para obtener el diálogo para devolver DIALOGRESULT.OK, puede configurarlo en el botón OK del diálogo:
void buttonOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Close();
}
O puede hacer la opción en Tigran's Responder .