Winforms Custom Dialog повесить родительское исполнение - PullRequest
2 голосов
/ 16 июня 2011

Я пытаюсь создать пользовательское диалоговое окно (с использованием WinForms), которое, подобно ColorDialog или OpenFileDialog, открывает и принимает некоторые входные данные от пользователя, а затем возвращает выполнение в родительскую форму после получения ввода..

Я попытался сделать это, просто создав пользовательскую форму с методом Show(), а затем вызвал ее так:

custom_dialog.Show();
var results = custom_dialog.Property;

Как вы могли догадаться, это не сработалотак как вторая строка была выполнена до того, как был выбран какой-либо ввод.

Мой вопрос: как я могу создать пользовательский диалог, который будет зависать при выполнении родительской формы, как ColorDialog или OpenFileDialog,чтобы я мог заставить пользователя что-то ввести до продолжения выполнения?

Ответы [ 3 ]

3 голосов
/ 16 июня 2011

Вы должны позвонить ShowDialog(), это откроет диалог как модальный, и вы продолжите выполнение в форме вызова только после закрытия диалога.

Хорошей практикой является использование usingблок вокруг модальной формы, так что он сразу же удаляется, когда заканчивается этот блок.

1 голос
/ 16 июня 2011

Использование Метод Form.ShowDialog .

Этот метод можно использовать для отображения модального диалогового окна в приложении.Когда этот метод вызывается, следующий за ним код не выполняется до тех пор, пока диалоговое окно не будет закрыто.

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

Вы можете использовать это возвращаемое значение, чтобы определить, как обрабатывать действия, которые произошли в диалоговом окне.

1 голос
/ 16 июня 2011

Вы хотите модальный диалог. Он выскочит и остановит все остальные исполнения, пока не закроется.

Что-то вроде

if(custom_dialog.ShowDialog() == DialogResult.Ok)
   do something here
else
   do something different
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...