Problème avec forme.dialogreult
-
12-11-2019 - |
Question
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();
}
Je ne comprends pas ce que je fais mal ici, je veux exécuter les instructions conditionnelles si l'utilisateur frappe ok dans le formulaire qui apparaît à frmCust.ShowDialog()
. Pour le moment, je ne peux que me rendre à "Dev1".
La solution
Peut-être que votre boîte de dialogue ne définit pas le résultat de la boîte de dialogue. Assurez-vous que vos boutons OK et annuler ont leur DialogResult
Propriétés définies sur ce que vous attendez.
Autres conseils
Assurez-vous d'attribuer correctement Dialogreult propriété du Form
avant qu'il ne ferme. Il sera donc retourné comme une valeur de retour de ShowDilaog()
appel.
Il y a aussi une autre option, c'est utiliser Accepterbutton et Annuler, afin de gérer correspondant Enter
et Cancel
appuyez sur la touche.
Placez un point d'arrêt (F9) sur la ligne:
if (dr == DialogResult.OK)
À la fermeture de la boîte de dialogue, vous aurez la chance d'examiner dr
est réglé sur.
Pour faire en sorte que la boîte de dialogue renvoie dialogResult.ok, vous pouvez soit le définir dans le bouton OK de la boîte de dialogue:
void buttonOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Close();
}
Ou vous pouvez faire l'option dans Tigran's réponse.