ShowDialog (), в то время как другая форма видна через ShowDialog (), закрывает оба? - PullRequest
1 голос
/ 29 января 2010

У меня следующая ситуация:

  1. ParentForm, который открывается WelcomeForm с ShowDialog.
  2. WelcomeForm содержит кнопку, которая открывается NewProjectForm с ShowDialog
  3. Когда пользователь нажимает OK на NewProjectForm, создается новый проект, и обе формы закрываются (хорошее поведение)
  4. Когда пользователь нажимает CANCEL на NewProjectForm, обе формы закрываются (понятное поведение, но нежелательное).

Я подозреваю, что это как-то связано с DialogResult (что на самом деле DialogResult.None на CANCEL и NewProjectForm)

Как я могу получить описанную выше ситуацию без закрытия обеих форм?

Редактировать
Код, используемый для открытия NewProjectForm:

ProjectNew projectNew = new ProjectNew();
projectNew.StartPosition = FormStartPosition.CenterParent;
projectNew.ShowDialog(this);

Код, используемый для открытия WelcomeForm:

Welcome welcome = new Welcome();
welcome.StartPosition = FormStartPosition.CenterParent;
welcome.ShowDialog(this);

Примечание: NewProjectForm это не , открытый Welcome, но ParentForm

Редактировать 2
Странные вещи; Я создал новый проект с тем же кодом / ситуацией, который не воспроизводит это поведение ...

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Меня это укусило, потому что я скопировал / вставил некоторые кнопки из другой формы, не понимая, что для одной из кнопок свойство DialogResult имеет значение DialogResult.Cancel .

При щелчке это устанавливало DialogResult содержащей формы, вызывая его закрытие.

Сброс на DialogResult.None Устранена проблема.

Итак, проверьте свойства DialogResult во всех ваших модальных диалогах.

1 голос
/ 29 января 2010

Это давняя проблема, с которой я сталкивался несколько раз. В этом посте обсуждается больше вопросов, а также есть обходной путь.

Очевидно, что это было исправлено в .Net 3.5 SP1 (я больше не могу воспроизвести его после установки SP1), хотя я не видел ни одного официального слова о том, что оно определенно исправлено.

0 голосов
/ 05 февраля 2010

Удалена пара кнопок, добавлена ​​новая: решено.
Поэтому я думаю, что это должен был быть DialogResult, странный материал.

...