Ärger mit der Form.Dialogergebnis
-
12-11-2019 - |
Frage
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();
}
Verstehe nicht, was ich hier falsch mache, ich möchte die bedingten Anweisungen ausführen, wenn der Benutzer in dem Formular, das unter angezeigt wird, auf OK klickt frmCust.ShowDialog()
.Im Moment kann ich nur zu "dev1" kommen.
Lösung
Möglicherweise legt Ihr Dialogfeld das Dialogergebnis nicht fest.Stellen Sie sicher, dass Ihre OK- und Abbrechen-Schaltflächen ihre haben DialogResult
eigenschaften auf das einstellen, was Sie erwarten.
Andere Tipps
Achten Sie darauf, richtig zuzuordnen Dialogergebnis eigentum der Form
bevor es geschlossen wurde.Es wird also wie ein Rückgabewert von zurückgegeben ShowDilaog()
nennen.
Es gibt auch eine andere Option, ist die Verwendung Akzeptierenbutton und Abbrechen-Taste, um entsprechende zu handhaben Enter
und Cancel
Tastendruck.
Setzen Sie einen Haltepunkt (F9) auf die Linie:
if (dr == DialogResult.OK)
Wenn der Dialog geschlossen wird, haben Sie die Möglichkeit zu prüfen, was dr
eingestellt ist.
Um den Dialog dazu zu bringen, DialogResult zurückzugeben.OK Sie können es entweder über die Schaltfläche OK des Dialogfelds einstellen:
void buttonOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Close();
}
Oder Sie können die Option in Tigran's ausführen Antwort.