Создание Windows-приложений на основе Visual C#



              

Создание Мастера


Во многих программах, когда требуется получить последовательный ряд каких-либо значений, диалоговые окна представляют в виде Мастера1)(Wizard). В программе Ballet с помощью Мастера пользователь вводит необходимые параметры, причем они также проходят проверку (рис. 3.24).

Мастер регистрации пользователя

увеличить изображение
Рис. 3.24.  Мастер регистрации пользователя

Форма Мастера появляется при выборе пункта главного меню "Новый пользователь":2)

private void itemNewUser_Click(object sender, System.EventArgs e) { //Создаем экземпляр wizard формы CreateUserWizard CreateUserWizard wizard = new CreateUserWizard(); //Показываем форму: wizard.ShowDialog(); … }

Форма CreateUserWizard (рис. 3.25) представляет собой контейнер для форм CUWStep1, CUWStep2, CUWStep3.

Родительская форма CreateUserWizard и дочерние формы CUWStep1, CUWStep2, CUWStep3 в режиме дизайна

увеличить изображение
Рис. 3.25.  Родительская форма CreateUserWizard и дочерние формы CUWStep1, CUWStep2, CUWStep3 в режиме дизайна

Обратите внимание на заголовок запущенной формы CreateUserWizard — к нему добавляются названия дочерних форм. После запуска формы CreateUserWizard в нее загружается форма CUWStep1:

private void CreateUserWizard_Load(object sender, System.EventArgs e) { … CUWStep1 step1 = new CUWStep1(identity); step1.MdiParent = this; step1.Show(); }

В обработчике кнопки "Далее" проверяется значение, введенное в текстовое поле, затем закрывается текущая форма и вызывается форма CUWStep2:

private void btnNext_Click(object sender, System.EventArgs e) { if(txbEmail.Text == "") { MessageBox.Show("Введите адрес электронной почты."); return; } else { … CUWStep2 step2 = new CUWStep2(this.identity); step2.MdiParent = this.MdiParent; this.Close(); step2.Show(); } }

В обработчике кнопки "Далее" формы CUWStep2 для проверки введенного значения снова применяется преобразование типов данных:

private void btnNext_Click(object sender, System.EventArgs e) { if(txbPop3.Text == "") { MessageBox.Show("Введите адрес сервера POP3"); } else { this.identity.Pop3 = txbPop3.Text; try { //Преобразовываем введенное значение в тип Int32 this.identity.Pop3Port = Int32.Parse(txbPop3Port.Text); CUWStep3 step3 = new CUWStep3(this.identity); step3.MdiParent = this.MdiParent; this.Close(); step3.Show(); } catch(Exception) { MessageBox.Show("Значение порта должно быть числом"); } } }

В последнем шаге Мастера необходимо закрыть не только форму CUWStep3, но также родительскую форму CreateUserWizard, которая, в свою очередь, является дочерней по отношению к главной форме mainForm. Родительская форма CreateUserWizard будет активной в этот момент, поэтому метод ActiveForm.Close() закроет ее:

private void btnFinish_Click(object sender, System.EventArgs e) { if(txbSmtp.Text != "") { this.identity.Smtp = txbSmtp.Text; //Закрываем текущую форму this.Close(); Thread.CurrentPrincipal = new GenericPrincipal (this.identity, new string[]{"user"}); this.identity.Dispose(); //Закрываем родительскую форму CreateUserWizard Form.ActiveForm.Close();

} else { MessageBox.Show("Введите адрес сервера SMTP"); } }

Итак, при запуске Мастера применяется форма, в которую последовательно загружаются дочерние формы. После выполнения всех действий в коде дочерней формы закрывается главная.




Содержание  Назад  Вперед