Модальный диалог из модального диалога - оба закрываются при закрытии второй части - почему?

С#/.NET 3.5/WinForms

У меня есть форма, которая открывает модальную форму диалога, которая открывает другую модальную форму диалога. Внутренняя диалоговая форма имеет кнопки "ОК" и "Отмена", а ее "AcceptButton" и "CancelButton" установлены соответственно.

Когда я нажимаю Enter или нажимаю OK во внутреннем диалоговом окне, внешний диалог также закрывается. Я не вижу, где я это делаю - это ожидаемое поведение?

Я могу предоставить код, но я не хотел загромождать это.

Ответ 1

Это происходит потому, что вызов ShowDialog также изменяет его состояние владельца.

Чтобы этого не произошло, вам нужно reset DialogResult первого модального диалога DialogResult.None после вызова ShowDialog ко второму диалоговому окну:

private void Button1_Click(object sender, EventArgs e)
{
    InnerDialog inner = new InnerDialog()
    DialogResult innerResult = inner.ShowDialog(this);
    this.DialogResult = DialogResult.None;
}

Это давняя проблема (см. this post).

Ответ 2

Я боролся с этим целый день, пока не нашел этот пост. Он не был исправлен в .NET 4.