Проблема с Form.DialogResult
-
12-11-2019 - |
Вопрос
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();
}
Не понимаю, что я здесь делаю не так, я хочу выполнить условные операторы, если пользователь нажимает «ОК» в форме, которая появляется по адресу frmCust.ShowDialog()
.На данный момент я могу добраться только до «dev1».
Решение
Возможно, ваш диалог не устанавливает диалоговое окно.Убедитесь, что ваши кнопки «ОК» и «Отмена» имеют свои свойства DialogResult
, установленные на то, что вы ожидаете.
Другие советы
Обязательно правильно назначьте ДиалогРезультат собственность Form
прежде чем он закрылся.Таким образом, он будет возвращен как возвращаемое значение ShowDilaog()
вызов.
Есть еще один вариант: использовать Принять кнопку и Кнопка отмены, чтобы обрабатывать соответствующие Enter
и Cancel
нажатие клавиши.
Поместите точку останова (F9) на строку:
if (dr == DialogResult.OK)
.
Когда диалоговое окно закрывается, у вас будет возможность изучить, к которому установлен dr
.
Чтобы получить диалог для возврата Dialogresult.ok, вы можете либо установить его в кнопку OK диалогового окна:
void buttonOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Close();
}
.
Или вы можете сделать опцию в Tigran's Ответ .