Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа5_C#.doc
Скачиваний:
100
Добавлен:
23.03.2015
Размер:
221.18 Кб
Скачать

2.2. Добавление на форму панели инструментов.

Добавьте на форму компонент ToolStrip. На форме появится пустая панель инструментов (рис. 5.7).

Рис. 5.7. Проект формы с пустой панелью инструментов.

Добавьте к панели инструментов четыре кнопки класса ToolStripButton. Для этого в окне свойств объекта toolStripl необходимо настроить свойствоItems. Нажмите на кнопку с тремя точками в полеItems. Откроется окноItems Collection Editor. Добавьте четыре кнопки и назовите их toolStripButtonPen,toolStripButtonText,toolStripButtonLine,toolStripButtonEllipse, изменив свойство Name каждого элемента в правом окне редактора. Установитеизображения для каждой кнопки панели инструментов. Для этого выберите свойство кнопкиImage, нажмите на кнопку с тремя точками в этом поле. Появится окно выбора изображения (рис 5.8).

Рис. 5.5. Окно выбора изображения

Нажмите кнопку Import, и выберите нужный файл с иконкой. Проделайте это для всех четырех кнопок. В итоге у вас получится панель инструментов, соответствующая рис. 5.9. Вы уже можете запустить программу и посмотреть результаты своей работы. Программа будет содержать только панель инструментов, которая не выполняет пока никаких функций.

Рис. 5.9. Внешний вид панели инструментов.

Добавьте в программу перечисление (enum), которое будет содержать режимы работы программы (инструменты). Для этого выше описания класса Form1 добавьте описание перечисления.

public partial class Form1 : Form

{

public enum Tools

{

PEN=1, TEXT, LINE, ELLIPSE, NULL=0

}

public Form1()

В классе Form1 создайте объект перечисления.

Tools curentTool;

Этот объект будет содержать выбранный в панели инструментов инструмент для рисования. Впоследствии программа будет использовать эту переменную для определения того, какой инструмент выбран текущим. Для того чтобы завершить работу с панелью инструментов приложения, добавьте обработчик события ItemClickedобъекта toolStrip1, щелкнув два раза указателем мыши по имени событияItemClickedна закладке событий в окне свойств. При этом в программу добавится функцияtoolStrip1_ItemClickedкак обработчик события, происходящего при нажатии кнопки на панели инструментов. У вас может возникнуть вопрос: «Как мы узнаем о том, какая именно кнопка была нажата?» Да, действительно, мы не создаем отдельный обработчик для каждой кнопки панели управления. Но мы можем различить это по параметрам, передаваемым в функцию. Измените методtoolStrip1_ItemClickedи добавьте дополнительный код, как показано ниже:

private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)

{ switch (e.ClickedItem.Name)

{ case "toolStripButtonPen":

curentTool = Tools.PEN; break;

case "toolStripButtonText":

curentTool = Tools.TEXT; break;

case "toolStripButtonLine":

curentTool = Tools.LINE; break;

case "toolStripButtonEllipse":

curentTool = Tools.ELLIPSE; break; }

SetToolStripButtonsPushedState(e.ClickedItem); }

private void SetToolStripButtonsPushedState(ToolStripItem button)

{ foreach (ToolStripButton btnItem in toolStrip1.Items)

{ if (btnItem == button){btnItem.Checked = true; }

else {btnItem.Checked = false; }} }

Обработчик нажатия кнопок на панели инструментов — функция toolStrip1_ItemClicked— включает в себя инструкцию switch, которая позволяет определить, какая именно кнопка была нажата. Вторым параметром функции-обработчика является переменная типаToolStripItemClickedEventArgs. КлассToolStripItemClickedEventArgsимеет свойствоClickedItem, которое соответствует нажатой кнопке. Если свойствоNameкнопки совпадает с искомым в инструкции case, то будет выполняться соответствующая операция. В соответствии с нажатой кнопкой выставляется режим работы программы (текущий выбранный инструмент). ФункцияSetToolStripButtonsPushedStateпредназначена для контроля состояния кнопок панели инструментов. Если вы запускали программу до изменения вышеприведенного кода, то при нажатии кнопок на панели инструментов они нажимались независимо друг от друга. Но для нашего приложения свойственно существование только одного режима в один момент времени. Поэтому может быть нажатой только одна из кнопок. ФункцияSetToolStripButtonsPushedStateследит за состоянием нажатия кнопок. При помощи цикла foreach функция просматривает все кнопки панели инструментов. Та из кнопок, которая совпадает с переданным параметром, делается вдавленной, свойствоChecked устанавливается в true. Для всех остальных кнопок свойствоChecked устанавливается в false. Вызов функцииSetToolStripButtonsPushedStateпроисходит из обработчика нажатия кнопокtoolStrip1_ItemClickedс параметром, соответствующим нажатой кнопке. Поэтому нажатая кнопка будет вдавлена, а все остальные нет. Теперь при запуске программы вы увидите, что только одна из кнопок может быть вдавлена в один момент времени. Как только вы нажмете другую кнопку, предыдущая вдавленная примет свое обычное состояние.