-
Разместите на форме будущего диалогового окна элементы управления и настройте их в соответствии с таблицей свойств (дочерние элементы внутренних контейнеров в таблице отображены составными именами)
Таблица
13.2 .
Таблица свойств формы диалогового окна MyModalDialogBox
Элемент
|
Свойство
|
Значение
|
Описание
|
Form |
Text |
Модальное диалоговое окно |
Текст строки заголовка |
|
FormBorderStyle |
FixedDialog |
С неизменяемыми размерами и без иконки системного меню в строке заголовка |
|
Size |
600, 450 |
Размеры окна в пикселах со стандартным соотношением 4/3 |
|
AutoScaleMode |
Font |
Для подстройки размеров под величину шрифта |
|
ControlBox |
False |
Без системных кнопок в строке заголовка |
|
ShowInTaskbar |
False |
Не отображать в панели задач рабочего стола Windows
|
|
StartPosition |
CenterParent |
Начальная позиция при запуске в центре родителя |
GroupBox |
Name |
grBoxRadioButton |
Контейнер для радиокнопок |
|
Text |
Выберите радиокнопку |
Заголовок контейнера переключателей |
GroupBox.RadioButton |
Text |
Радиопереключатель1 |
Надпись радиокнопки |
|
Checked |
True |
Изначально включена |
GroupBox.RadioButton |
Text |
Радиопереключатель2 |
Надпись радиокнопки |
GroupBox.RadioButton |
Text |
Радиопереключатель3 |
Надпись радиокнопки |
GroupBox.RadioButton |
Text |
Радиопереключатель4 |
Надпись радиокнопки |
GroupBox.RadioButton |
Text |
Радиопереключатель5 |
Надпись радиокнопки |
Label |
Text |
Укажите свои ФИО |
Надпись текстовой метки |
|
Font.Bold |
True |
Полужирный шрифт надписи |
|
Font.Size |
10 |
Размер шрифта надписи |
|
ForeColor |
Red |
Цвет текста |
TextBox |
Name |
Фамилия |
Идентификатор русский !!! |
|
Text |
Иванов |
|
TextBox |
Name |
Имя |
Идентификатор русский !!! |
|
Text |
Петр |
|
TextBox |
Name |
Отчество |
Идентификатор русский !!! |
|
Text |
Сидорович |
|
Panel |
Name |
panelCheckBox |
|
|
BackColor |
White |
Фон белый |
Panel.CheckBox |
Text |
Флажок 1 |
|
Panel.CheckBox |
Text |
Флажок 2 |
|
|
Tag |
Важный |
Наша метка |
Panel.CheckBox |
Text |
Флажок 3 |
|
|
Tag |
Важный |
Наша метка |
CheckedListBox |
Name |
checkedListBox |
Идентификатор списка флажков |
|
Items |
Списковый флажок 1
Списковый флажок 2
Списковый флажок 3
Списковый флажок 4
Списковый флажок 5
Списковый флажок 6
Списковый флажок 7
|
Элементы списка |
Button |
Name |
btnOK |
|
|
AutoSize |
True |
Подстройка под размер надписи |
|
DialogResult |
OK |
Устанавливает значение свойства DialogResult=OK диалогового окна и закрывает окно |
|
Text |
OK |
Надпись на кнопке |
Button |
Name |
btnCancel |
|
|
AutoSize |
True |
Подстройка под размер надписи |
|
DialogResult |
Cancel |
Устанавливает значение свойства DialogResult=Cancel диалогового окна и закрывает окно |
|
Text |
Cancel |
Надпись на кнопке |
После проведенных настроек форма диалогового окна должна стать такой
Теперь нужно написать код, который свяжет разработанные формы вместе и позволит опросить состояние всех элементов диалоговой формы после ее использования.
-
Создайте обработчик события Click кнопки в главном диалоговом окне и заполните его так
private void btnCreateDialogBox_Click(object sender, EventArgs e)
{
txtShowProperties.Text = "";
MyModalDialogBox dlg = new MyModalDialogBox();
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// Диалоговое окно еще существует, опрашиваем его
foreach (Control ctrl0 in dlg.Controls)
{
ShowProperties("", ctrl0);
if (ctrl0.Controls.Count > 0)
foreach (Control ctrl1 in ctrl0.Controls)
{
ShowProperties("\t", ctrl1);
}
}
}
else
txtShowProperties.Text = "Пользователь установки не менял";
dlg.Dispose(); // Освободили явно ссылку на диалоговое окно
}
private void ShowProperties(string str, Control ctrl)
{
txtShowProperties.Text += str + "Name: " +
ctrl.Name + "\r\n";
if (!(ctrl is Panel) && !(ctrl is CheckedListBox))
txtShowProperties.Text += str + "Text: " +
ctrl.Text + "\r\n";
if(ctrl is CheckedListBox)
{
CheckedListBox check = (CheckedListBox)ctrl;
for (int i = 0; i < check.Items.Count; i++)
txtShowProperties.Text += "\t" +
check.Items[i].ToString() + "\r\n";
}
if ((String)ctrl.Tag == "Важный")
txtShowProperties.Text += "!!!Помеченный нами в
свойстве Tag!!!" + "\r\n";
}
Листинг
13.4 .
Обработчик события btnCreateDialogBox_Click в файле MainForm.cs