Label, LinkLabel и PictureBox
Программы, как правило, содержат пункт главного меню "О программе", где в отдельном окне помещается логотип компании, лицензионное соглашение, гиперссылки на сайт разработчика и другая информация. Создадим подобную форму, используя новые элементы управления — Label, LinkLabel и PictureBox.
Итак, добавим в наш проект новую форму и назовем ее About.cs. Установим следующие свойства формы:
About, форма, свойство | Значение |
Name | About |
FormBorderStyle | FixedSingle |
MaximizeBox | False |
MinimizeBox | False |
Size | 318; 214 |
Text | About Notepad C# |
Добавим на форму элемент управления PictureBox — он представляет собой подложку, размещаемую на форме, которая может содержать в себе рисунки для отображения. В поле свойства Image щелкаем на кнопку (…) и выбираем рисунок по адресу Code\Glava2\NotepadCSharp\Icon\logo.gif. Поскольку logo.gif является анимированным рисунком, элемент PictureBox начинает воспроизводить анимацию сразу же, даже в режиме дизайна.
Из окна ToolBox перетащим на форму кнопку, Label и LinkLabel. В поле свойства Text кнопки введем &OK. Элемент Label предназначен для размещения на форме надписей, которые в готовом приложении будут доступны только для чтения. В поле свойства Text введем Notepad C# 2006 All rights reserved. Элемент LinkLabel отображает текст на форме в стиле web-ссылок и обычно используется для создания навигации между формами или ссылки на сайт. В поле Text этого элемента вводим адрес гипотетического сайта — www.notepadcsharp.com. Пользователь будет переходить на сайт, нажимая на эту ссылку, поэтому реализуем переход по гиперссылке для события Click. В окне Properties щелкаем дважды на событии Click и добавляем обработчик:
private void linkLabel1_Click(object sender, System.EventArgs e){ //Добавляем блок для обработки исключений — по разным причинам //пользователь может не получить доступа к ресурсу. try { //Вызываем метод VisitLink, определенный ниже VisitLink(); } catch (Exception ex) { MessageBox.Show(ex +"Unable to open link that was clicked."); }} //Создаем метод VisitLinkprivate void VisitLink(){ // Изменяем цвет посещенной ссылки, программно //обращаясь к свойству LinkVisited элемента LinkLabel linkLabel1.LinkVisited = true; //Вызываем метод Process.Start method для запуска браузера, //установленного по умолчанию, и открытия ссылки System.Diagnostics.Process.Start("https://www.notepadcsharp.com");}Кнопка OK просто будет закрывать форму:
private void button1_Click(object sender, System.EventArgs e){ this.Close();}
В пункте главного меню About Programm… формы frmmain добавляем процедуру вызова формы About:
private void mnuAbout_Click(object sender, System.EventArgs e){ //Создаем новый экземпляр формы About About frm = new About(); frm.Show();}Запускаем приложение (рис. 2.26):
Рис. 2.26. Окно About Notepad C#
Режимы запуска окон
В приложении Notepad C# с открытой формой About без труда можно вернуться к другим пунктам меню программы или документу, т. е. форма About позволяет переключать фокус. Такое поведение дочерних форм характерно для панелей инструментов в программах и называется немодальным. Наоборот, форма, запущенная в модальном режиме, не позволит работать с приложением до тех пор, пока мы не закроем эту форму. Для открытия формы в модальном режиме используется метод ShowDialog:
private void mnuAbout_Click(object sender, System.EventArgs e){ //Создаем новый экземпляр формы About About frm = new About(); frm.ShowDialog();}ToolBar и ImageList
Панели инструментов ToolBar содержат наборы кнопок, как правило, дублирующих пункты главного меню. В графических программах панели инструментов — основное средство работы. Откроем снова приложение Notepad C# и перетащим из окна ToolBox элемент управления ToolBar. На кнопках панели обычно располагаются иконки, поэтому, прежде чем мы начнем заниматься ими, нам следует подумать о рисунках. Добавим на форму элемент управления ImageList, применяемый для хранения рисунков, которые могут быть использованы для оформления приложения. Щелкнем в поле Images элемента ImageList (рис. 2.29).
Рис. 2.29. Cвойство Images элемента ImageList
Добавим файлы иконок, последовательно нажимая кнопку Add и выбирая директорию — Code\Glava2\NotepadCSharp\Icon. Мы создадим кнопки панели инструментов, дублирующие действия пунктов меню New, Open, Save, Cut, Copy и Paste, поэтому вы можете выбрать подходящие изображения на своем компьютере 1) . В любом случае, подобрав иконки, завершаем работу с редакторомImageCollectionEditor, нажимая OK. Займемся теперь элементом ToolBar. Свойству Name установим значение toolBarMain, а в поле свойства ImageList выберем imageList1. Запустим редактор ToolBarButton Collection Editor для создания кнопок, щелкнув кнопку (…) в поле свойства Buttons (рис. 2.30).
Рис. 2.30. Редактор ToolBarButton Collection Editor
Для добавления кнопок в этом редакторе тоже следует нажимать клавишу Add. Создадим шесть кнопок, установив для них следующие свойства:
Name | Image Index | ToolTipText |
tbNew | Create New | |
tbOpen | Open | |
tbSave | Save | |
tbCut | Cut | |
tbCopy | Copy | |
tbPaste | Paste |
Свойство Name устанавливает название кнопки для обращения к ней в коде. Свойство Image Index определяет изображение на кнопке, а в поле ToolTipText вводим текст всплывающей подсказки, которая будет появляться при наведении курсора на кнопку. Завершив работу с редактором кнопок в режиме дизайна формы frmmain, дважды щелкаем на ToolBar и переходим в код. Для создания функциональности кнопок связываем событие Click заданной кнопки c соответствующим обработчиком пунктов меню:
Запускаем приложение. Кнопки панели инструментов дублируют пункты меню, а при наведении на них появляются подсказки (рис. 2.31).
Рис. 2.31. Панель инструментов Toolbar
Задание
В созданном приложении дополнительно реализовать следующие функции:
В компонент ToolBar вставить выбор размера шрифта для выделенного текста и кнопку закрытия всех дочерних окон.