Я использую Windows Forms в C# и имею проблемы с тем, как и когда разные формы (у меня есть 2) должны закрываться, а не. Это очень раздражает, так как я чувствую, что должен уметь это исправить. Но здесь мы идем.Как обрабатывать события закрытия формы
У меня есть две формы: одна MainForm, которая вызывает другую форму, называемую ContactForm.
MainForm:
private void btnAdd_Click(object sender, EventArgs e)
{
ContactForm frmContact = new ContactForm();
int index = lstCustomers.SelectedIndex;
//If a customer is selected, export data for the selected customer to ContactForm
if (index != -1)
{
frmContact.ContactData = customerMngr.GetCustomer(index).ContactData;
}
if (frmContact.ShowDialog() == DialogResult.OK) //Show the ContactForm object
{
//The user has chosen the OK button - add the new customer object
customerMngr.AddCustomer(frmContact.ContactData); //??
UpdateCustomerList();
}
if (frmContact.ShowDialog() == DialogResult.Cancel)
{
return;
}
}
И форма, которая называется: кнопку OK.
private void btnOK_Click(object sender, EventArgs e)
{
if (ValidateInput())
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
Кнопка Отмена:
private void btnCancel_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Do you want to cancel and discard all data?", "Cancel input", MessageBoxButtons.YesNo,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
При нажатии на кнопку OK в ContactForm используется я хочу, чтобы закрыть, который работает. Когда я нажимаю кнопку отмены, и нет (в появившемся окне), я хочу, чтобы форма оставалась открытой, а вход все еще не поврежден. Сейчас это не работает.
Любые идеи?
/Martin
Если вы сделали это правильно, DialogResult уже установлен, когда запускается действие кнопки Click. Поэтому, если он отменен, вам нужно вернуть DialogResult в None. –
Спасибо, это сработало. Я должен был это видеть! – Manin