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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top