Возврат DialogResult из дочерней формы, на которую есть ссылка в родительском проекте Form
В решении для нескольких проектов у меня был стартовый проект WinForms с 2 формами, ожидая DialogResult
всякий раз, когда показывали, что детская форма продолжает исполняться в моей основной форме.
var form2 = new ThisNameSpace.FormChild();
var dResult = form2.ShowDialog(this);
if(dResult == DialogResult.OK)
{
// Do some work
}
else
{
// Do other work
}
По какой-то причине мне пришлось перенести дочернюю форму в другой проект. Я ссылался на dll нового проекта в моем основном проекте запуска формы, но теперь я не могу вернуть результат диалога. Когда моя детская форма закрывает FormClosing
Событие основной формы поднимается с CloseReason.None
и приложение выходит. Как я могу обойти это?
1 ответ
Вы не должны поднимать FormClosing
событие, и вы не должны писать какой-либо пользовательский код, чтобы просто закрыть диалог.
Вместо этого сделайте это:
- на кнопку ОК в дочерней форме, установите
DialogResult
собственность наOK
- на вашей детской форме, установите набор
Accept Button
свойство указывать на вашу кнопку ОК
это все, что вам нужно, чтобы закрыть окно, и вернется правильный DialogResult.
Если вам когда-либо понадобится закрыть его "вручную" (а это редко для модальных диалогов, то есть тех, которые открываются с помощью ShowDialog
вместо Show
), используйте Close
метод.