Problemas com Form.DialogResult
-
12-11-2019 - |
Pergunta
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();
}
Não entendo o que estou fazendo de errado aqui, quero executar as instruções condicionais se o usuário clicar em OK no formulário que aparece em frmCust.ShowDialog()
.No momento só consigo chegar ao "dev1".
Solução
Talvez sua caixa de diálogo não esteja definindo o resultado da caixa de diálogo.Certifique-se de que os botões OK e Cancelar estejam DialogResult
propriedades definidas como você espera.
Outras dicas
Certifique-se de atribuir corretamente DialogResult propriedade do Form
antes de fechar.Portanto, será retornado como um valor de retorno de ShowDilaog()
chamar.
Há outra opção também, é usar Botão Aceitar e Botão Cancelar, para lidar com o correspondente Enter
e Cancel
pressione o botão.
Coloque um Breakpoint (F9) na linha:
if (dr == DialogResult.OK)
Quando a caixa de diálogo fechar, você terá a oportunidade de examinar o que dr
está configurado para.
Para fazer com que a caixa de diálogo retorne DialogResult.OK, você pode configurá-lo no botão OK da caixa de diálogo:
void buttonOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Close();
}
Ou você pode fazer a opção no Tigran's responder.