Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1 ТП.doc
Скачиваний:
6
Добавлен:
26.08.2019
Размер:
558.08 Кб
Скачать
  1. Панели GroupBox и Panel

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

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

  1. Добавление объектов в панели

На этапе инициализации приложения создается сам элемент управления GroupBox (как объект класса System.Windows.Forms.GroupBox), и флажки с зависимой фиксацией:

this.groupBox1 = new System.Windows.Forms.GroupBox();

this.radioButtonBkgRed = new System.Windows.Forms.RadioButton();

this.radioButtonBkgGreen = new System.Windows.Forms.RadioButton();

this.radioButtonBkgBlue = new System.Windows.Forms.RadioButton();

this.radioButtonBkgWhite = new System.Windows.Forms.RadioButton();

Далее флажки добавляются в элемент управления GroupBox при помощи метода AddRange:

//

// groupBox1

//

this.groupBox1.Controls.AddRange(

new System.Windows.Forms.Control[]

{

this.radioButtonBkgWhite,

this.radioButtonBkgBlue,

this.radioButtonBkgGreen,

this.radioButtonBkgRed

});

Таким образом, флажки оказываются добавленными к панели groupBox1 класса GroupBox. Далее программа настраивает свойства панели GroupBox, определяющие ее расположение, размеры, текст надписи и т.д.:

this.groupBox1.Location = new System.Drawing.Point(24, 16);

this.groupBox1.Name = "groupBox1";

this.groupBox1.Size = new System.Drawing.Size(152, 136);

this.groupBox1.TabIndex = 0;

this.groupBox1.TabStop = false;

this.groupBox1.Text = "Укажите цвет фона";

Аналогичным образом создается панель panel1 класса Panel, надпись и флажки, расположенные внутри панели:

this.panel1 = new System.Windows.Forms.Panel();

this.label1 = new System.Windows.Forms.Label();

this.radioButtonForeRed = new System.Windows.Forms.RadioButton();

this.radioButtonForeGreen = new System.Windows.Forms.RadioButton();

this.radioButtonForeBlue = new System.Windows.Forms.RadioButton();

this.radioButtonForeBlack = new System.Windows.Forms.RadioButton();

Все объекты, расположенные внутри правой панели, добавляются в нее все тем же методом AddRange:

//

// panel1

//

this.panel1.Controls.AddRange(

new System.Windows.Forms.Control[]

{

this.radioButtonForeBlack,

this.radioButtonForeBlue,

this.radioButtonForeGreen,

this.radioButtonForeRed,

this.label1

});

this.panel1.Location = new System.Drawing.Point(192, 8);

this.panel1.Name = "panel1";

this.panel1.Size = new System.Drawing.Size(152, 144);

this.panel1.TabIndex = 1;

Обратите внимание, что в панель panel1 добавляются не только флажки, но и надпись label1 класса Label.

Обработка событий

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

Чтобы создать обработчик событий bkgChanged для группы флажков, отвечающих за изменение цвета фона нашей надписи, выделите любой флажок в группе Укажите цвет фона. Затем в окне Properties откройте вкладку событий, введите в поле CheckedChanged строку bkgChanged и нажмите клавишу Enter. В результате будет создано тело обработчика событий bkgChanged.

Далее выделите по очереди все остальные флажки группы Укажите цвет фона, и назначьте для них обработчик событий bkgChanged при помощи только что упомянутого окна Properties. Таким образом, изменение состояния всех флажков группы Укажите цвет фона будет отслеживаться единым обработчиком событий bkgChanged.

Далее повторите эту операцию для группы флажков Укажите цвет текста, расположенной в правой части главного окна приложения. Назначьте для них обработчик событий foreChanged.

Ниже мы привели модифицированные исходные тексты обработчиков событий bkgChanged и foreChanged:

private void bkgChanged(object sender, System.EventArgs e)

{

RadioButton rb = (RadioButton)sender;

switch(rb.Text)

{

case "Красный":

{

label2.BackColor = Color.LightCoral;

break;

}

case "Зеленый":

{

label2.BackColor = Color.LightGreen;

break;

}

case "Синий":

{

label2.BackColor = Color.LightBlue;

break;

}

case "Белый":

{

label2.BackColor = Color.White;

break;

}

}

}

private void foreChanged(object sender, System.EventArgs e)

{

RadioButton rb = (RadioButton)sender;

switch(rb.Text)

{

case "Красный":

{

label2.ForeColor = Color.Red;

break;

}

case "Зеленый":

{

label2.ForeColor = Color.Green;

break;

}

case "Синий":

{

label2.ForeColor = Color.Blue;

break;

}

case "Белый":

{

label2.ForeColor = Color.White;

break;

}

}

}

Эти обработчики событий работают по одинаковому алгоритму. Вначале они сохраняют в переменной rb идентификатор флажка, состояние которого было изменено. Затем обработчики извлекают текст надписи, расположенной возле флажка. В зависимости от этого текста, обработчики изменяют цвет фона или текста надписи label2, расположенной в нижней части главного окна нашего приложения.

При необходимости Ваше приложение может обрабатывать и другие события, создаваемые флажками с зависимой фиксацией. Полный список и кроткое описание этих событий Вы сможете просмотреть на вкладке событий окна Properties . Обрабатывая, например, события MouseEnter и MouseLeave, Вы сможете динамически изменять внешний вид флажка, когда над ним находится курсор мыши.