.NET Winform Custom Form - Нужно вернуть DialogResult или как-то предотвратить асинхронные события - PullRequest
4 голосов
/ 12 сентября 2010

У меня есть форма, которая вызывает пользовательскую дочернюю форму.Дочерняя форма в основном представляет собой всплывающее окно, которое получает некоторые пользовательские данные.

Я хочу, чтобы родительская форма обрабатывала информацию, возвращаемую дочерней формой.

Проблема в том, что родительская форма вызываетChild, и не ждет ответа.

В идеале я хотел бы, чтобы форма Child возвращала DialogResult.Функционально, это ясно, что происходит (особенно потому, что у пользователя есть опция Отменить дочерний элемент управления) и кажется простым способом заставить родителя ждать.Я не понял, как это сделать.

Вторичная проблема заключается в том, что родительский элемент управления выходит за пределы события childDialog.Show () и пытается обработать информацию дочернего элемента управления.Что еще не было изменено.
Установка условия с использованием открытых значений дочернего элемента управления, таких как childDialog.UserClickedOK, не поможет, поскольку значения по умолчанию все еще действуют.

Что я пропускаю?

Спасибо всем!:)

1 Ответ

6 голосов
/ 12 сентября 2010

Вам нужно показывать форму модально, используя ShowDialog вместо Show.Внутри вашей дочерней формы вы устанавливаете DialogResult на то, что имеет больше смысла, учитывая взаимодействие с пользователем, которое происходило ранее.

...