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

C # / .NET 3.5 / WinForms

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

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

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

Ответы [ 2 ]

18 голосов
/ 14 июля 2009

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

Чтобы этого не происходило, вам нужно сбросить 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;
}

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

0 голосов
/ 23 ноября 2010

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

...