Пользовательское диалоговое окно в C #? - PullRequest
9 голосов
/ 02 августа 2011

У меня есть кнопка, при нажатии которой открывается диалоговое окно с различными элементами управления, такими как переключатели и текстовые поля.Если все в порядке, то значения в этом диалоговом окне передаются обратно кнопке, а остальная часть кода обрабатывается с этими значениями.Если отменить, то ничего не делать.

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

Ответы [ 5 ]

31 голосов
/ 02 августа 2011

1.) Создайте форму, о которой вы говорили, со всеми необходимыми элементами пользовательского интерфейса. Также добавьте кнопку ОК и Отмена.

2.) На панели свойств кнопки «ОК» и «Отмена» установите для значений DialogResult значения «ОК» и «Отмена» соответственно. Кроме того, вы также можете установить свойство формы CancelButton как свойство кнопки «Отмена», которую вы создали.

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

4.) Чтобы отобразить диалоговое окно, выполните что-то вроде

using( MyDialog dialog = new MyDialog() )
{
   DialogResult result = dialog.ShowDialog();

   switch (result)
   {
    // put in how you want the various results to be handled
    // if ok, then something like var x = dialog.MyX;
   }

}
4 голосов
/ 02 августа 2011

Вы можете сделать это. Создать новую форму. Из основной формы вы можете вызвать пользовательскую форму, используя:

CustomForm customForm = new CustomForm();
customForm.ShowDialog(); 

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

1 голос
/ 23 августа 2013

Где-то в коде, который выводит диалоговое окно, вы также можете явно установить результат. Например, вы можете поместить следующий код в обработчик события нажатия кнопки.

OnOKButton_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
    this.Dispose();
}
0 голосов
/ 11 июля 2016
  • Добавление кнопок в форму окна.Я обычно называю кнопки либо cmdOK, либо cmdCancel

enter image description here

  • Определение кнопок отмены и OK в диалоговой форме

enter image description here

0 голосов
/ 02 августа 2011

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

Если вы нажмете ОК, вы запустите событие со значениями из диалогового окна. Для отмены событие не срабатывает.

В форме с помощью кнопки вы подключаете обработчик события. Это получает ваши ценности, и вы можете делать с ними все, что вам нужно.

http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...