Я сталкиваюсь странное поведение с моей WinForms приложение в VS 2010. Я запускаю новую форму, используя прямолинейный код:WinForm закрывается даже после удаления Close()
MainDisplayForm.cs:
using (MyForm myForm = new MyForm())
{
var result = myForm.ShowDialog();
if (result == DialogResult.OK)
{
// do stuff
}
}
Я добавил кнопку «Отмена» в MyForm, которая отобразила для пользователя подтверждение MessageBox
, а затем вызвало this.Close()
. Я позже удалил строку this.Close()
, потому что я добавил выделенную кнопку Закрыть. Однако всякий раз, когда я нажимаю Отменить, экземпляр MyForm все еще закрывается!
MyForm.cs:
private void cmdCancel_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show(...)
// clear the form if user really wants to quit
// this.Close()
// even after removing the above line, program still jumps to FormClosing
}
Когда я отлаживать линию за линией после нажатия на кнопку Отмена, поток программа просто переходит к MyForm_FormClosing
после того, как попадает в конец cmdCancel_Click
. Я создал новую кнопку и установил ее событие click на cmdCancel_Click
, и он не закрыл форму - поэтому проблема решена, но мне все еще интересно, это просто ошибка или что-то еще? Я также позаботился о том, чтобы вернуть свойство DialogResult
моей кнопки «Отмена» обратно до None
(после изменения его на Cancel
, прежде чем я представила специальную кнопку «Закрыть»).
Вы случайно установили свойство cancelbutton формы в cmdCancel? – terrybozzio
Что такое значение свойства DialogResult для кнопки? – hatchet
@terrybozzio Я тоже избавился от этого. У меня есть еще одна кнопка «Сохранить», которая испытывает ту же проблему. Оба имеют 'this.Close()', и оба продолжают закрывать форму даже после того, как я удалил ее. – valsidalv