Проблема с Form.DialogResult - PullRequest
       31

Проблема с Form.DialogResult

0 голосов
/ 24 января 2012
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();

    }

Не понимаю, что я здесь делаю неправильно, я хочу выполнить условные операторы, если пользователь нажимает OK в форме, которая появляется в frmCust.ShowDialog(). На данный момент я могу добраться только до "dev1".

Ответы [ 3 ]

4 голосов
/ 24 января 2012

Возможно, ваш диалог не устанавливает результат диалога. Убедитесь, что у ваших кнопок OK и Отмена свойства DialogResult установлены так, как вы ожидаете.

3 голосов
/ 24 января 2012

Убедитесь, что правильно присвоили DialogResult свойство Form до его закрытия.Так что он будет возвращен как возвращаемое значение ShowDilaog() call.

Также есть еще один вариант - использовать AcceptButton и CancelButton , чтобы обрабатывать соответствующие Enter и Cancel нажатия клавиш.

1 голос
/ 24 января 2012

Поместите точку останова (F9) на линию:

if (dr == DialogResult.OK)

Когда диалоговое окно закроется, у вас будет возможность проверить, на что установлено значение dr.

Чтобы диалоговое окно вернуло DialogResult.OK, вы можете установить его в кнопке OK диалогового окна:

void buttonOK_Click(object sender, EventArgs e)
{ 
    this.DialogResult = DialogResult.OK;
    Close();
}

Или вы можете сделать этот вариант в ответе Тиграна .

...