Методические рекомендации к практическим занятиям для студентов очной формы обучения по специальности
Скачать 2.5 Mb.
|
m_DocumentChanged в методе Dispose, который вызывается при закрытии окна приложения. Для этого на панели Обозреватель решений выделите SimpleNotepadForm.Designer.cs, найдите метод Dispose и внесите необходимые изменения. Теперь, когда пользователь попытается закрыть программу с помощью соот- ветствующей кнопки заголовка окна, не сохранив сделанные изменения, на экране появится стандартное диалоговое окно, предлагающее ему сохранить документ. 35. Создайте обработчики событий пунктов меню Edit. Реализация данных функций является простой, поскольку элемент управления RichTextBox имеет все необходимые методы. Добавьте в пункт меню Edit строку Redo. Подготовьте обработчики событий для всех строк меню Edit. 48 36. Измените меню Format, добавив в него строку Color, а также два меню вто- рого уровня – CharacterStyle и ParagraphAlignment. Измените имена строк меню таким образом, чтобы с ними было легче работать в программе. 37. Добавьте на форму компонент FontDialog с вкладки Диалоговые окна па- нели элементов. Этот компонент отображает на экране стандартное диалого- вое окно выбора шрифта. Создайте обработчик события пункта меню Font и вставьте следующий код: 49 После того как пользователь выбрал нужный ему шрифт, обработчик собы- тия переписывает этот шрифт из свойства fontDialog1.Font в свойство richTextBox1.SelectionFont. Свойство SelectionFont позволяет изменить шрифт фрагмента текста, выделенного пользователем (или программой) в окне редактирования. 38. Добавьте на форму компонент ColorDialog с вкладки Диалоговые окна па- нели элементов. Этот компонент отображает на экране стандартное диалого- вое окно выбора шрифта. Создайте обработчик события пункта меню Color и вставьте следующий код: 39. Создайте обработчик события для пункта меню Bold и вставьте следующий код: Получив управление данный метод прежде всего, определяет шрифт фраг- мента текста, выделенного пользователем, анализируя свойство richTextBox1.SelectionFont. Если шрифт определить не удалось, и это свой- ство содержит значение null, программа не делает никаких изменений. В противном случае программа сохраняет текущий шрифт в переменной currentFont класса System.Drawing.Font. Далее метод проверяет, был ли выделен фрагмент текста жирным шрифтом, анализируя свойство richTextBox1.SelectionFont.Bold. Если это свойство содержит значение true, то метод снимает выделение, если нет, то устанавливает его. Для снятия вы- деления программа записывает в переменную newFontStyle значение FontStyle.Regular, а для установки— значение FontStyle.Bold. 50 40. При выделении фрагмента текста жирным шрифтом в меню одновременно отмечается «галочкой» строка Bold. Для этого необходимо создать CheckMenuFontCharacterStyle. Для этого перейдите в окно кода и вставьте программный код процедуры из текстового документа CheckMenu.txt. Ме- тод CheckMenuFontCharacterStyle по очереди проверяет стилевое оформ- ление выделенных фрагментов, отмечая «галочками» соответствующие строки меню CharacterStyle или снимая со строк этого меню отметки. 41. Запустите программу и протестируйте её работу. 42. Аналогично создайте обработчики для пунктов меню Italic, Underline, Strikeout. 43. Подготовьте обработчики событий для строк меню Paragraph Alignment следующим образом: Все эти обработчики событий строк меню ParagraphAlignment изменяют значение свойства richTextBox1.SelectionAlignment, задающего выравнива- ние параграфа текста, выделенного пользователем (для выделения параграфа с целью изменения выравнивания достаточно установить в него текстовый курсор). 44. Сохраните изменения и протестируйте работу приложения. Задание 2. Создание панели инструментов приложения 1. Во многих приложениях, созданных для операционной системы Windows, наиболее часто использующиеся строки меню дублируются кнопками, рас- положенными на инструментальных панелях. Чтобы добавить инструмен- тальную панель в окно приложения, перетащите мышью элемент управления ToolStrip вкладки Все формы Windows Forms панели элементов в окно проектирования формы нашего приложения. По умолчанию окно инстру- 51 ментальной панели появится в верхней части формы. В только что добав- ленной панели нет ни одной кнопки. 2. Сразу после добавления окно инструментальной панели будет расположено над окном редактора текста. Чтобы исправить это положение, щелкните пра- вой кнопкой мыши окно редактора текста, а затем выберите из контекстного меню строку На передний план. В результате окна примут правильное вза- имное расположение. 3. Создайте в папке проекта отдельную папку для хранения изображений ин- струментальной панели, назвав ее, например, ImageList. Далее скопируйте в созданную папку изображения, подготовленные для кнопок панели. 4. Выделите компонент ToolStrip и на панели свойств найдите свойство Items, щелкните по кнопке . Откроется окно редактора коллекций. 5. В диалоговом окне Редактор коллекции элементов в списке элементов вы- берите Button и нажмите кнопку Добавить. На панели свойств измените значение свойства Name данной кнопки на создатьToolStripButton, а раз- мер кнопки установите равным 24. 6. В окне свойств найдите свойство Image. Нажмите на кнопку , в диалого- вом окреВыбор ресурса нажмите на кнопку Импорт и выберите соответ- ствующее изображение из сохранённых ранее в папке ImageList. 7. Задайте комментарий-подсказку для кнопки создатьToolStripButton, уста- новив свойство ToolTripText равным Создать. 8. Аналогично создайте кнопки открытьToolStripButton, сохра- нитьToolStripButton, печатьToolStripButton. 9. Далее необходимо создать разделитель между группами кнопок, ответствен- ных за выполнение различных групп операций. Для этого в списке элемен- тов выберите Separator и нажмите кнопку Добавить. 10. Далее аналогично создайте кнопки вырезатьToolStripButton, копиро- ватьToolStripButton, вставитьToolStripButton. 11. Теперь необходимо связать созданные ранее функции-обработчики события команд пункт меню с соответствующими кнопками панели инструментов. Выделите кнопку создатьToolStripButton, на панели Свойства перейдите на вкладку События , найдите событие Click и в списке выберите функ- цию menuFileNew_Click. Аналогично добавьте функции для остальных кнопок панели инструментов. 12. Сохраните приложение. Запустите его и протестируйте работу кнопок пане- ли инструментов. Задание 3. Создание строки состояния 1. Разместите на форме компонент StatusStrip со вкладки Меню и панели ин- струментов панели элементов. 2. В меню компонента StatusStrip выберите опцию StatusLabel. 52 3. Далее на панели Свойства найдите свойство Text и сделайте его пустым. 4. Для того чтобы отслеживать выбор строк меню необходимо предусмотреть специальный обработчик события DropDownItemClicked. Это событие со- здается строками меню, когда пользователь выбирает их при помощи мыши или клавиатуры. Создайте обработчик событий. Для этого выделите мышью меню File в окне дизайнера формы, а затем перейдите на вкладку События панели Свойства. В списке событий найдите событие DropDownItemClicked и дважды щелкните по строке рядом с ним. После этого будет создано пустое тело обработчика события. Вставьте следующий код в обработчик события: 5. Создайте пустую строку перед обработчиком данного события и опишите метод UpdateStatus следующим образом: 6. Выделите мышью меню Edit в окне дизайнера формы, а затем перейдите на вкладку События панели Свойства. В списке событий найдите событие DropDownItemClicked и в списке рядом с ним выберите событие menuFile_DropDownItemClicked. Аналогично выполните для всех осталь- ных пунктов меню. 53 7. Сохраните приложение. Запустите его и протестируйте работу строки состо- яния. Задания для внеаудиторной самостоятельной работы Составьте опорный конспект по теме: запишите основные методы, которые ис- пользуются при создании проекта. Критерии оценивания на практическом занятии Балл Уровень освоения компетенций Критерии оценивания уровня освоения компетенций 5 Максимальный Практическая работа выполнена в полном соответствии с требованиями, студент представил все задания практи- ческой работы без погрешностей и замечаний, на все во- просы при защите практической работы дал правильные ответы. 4 Высокий Практическая работа выполнена в полном соответствии с требованиями, студент представил все задания практи- ческой работы с небольшими погрешностями в выпол- нении на персональном компьютере, на защите практи- ческой работы затруднялся при ответах на некоторые вопросы, нуждался в уточняющих вопросах и подсказ- ках со стороны преподавателя. 3 Средний Практическая работа выполнена в соответствии с требо- ваниями, студент представил все задания практической работы с существенными погрешностями в выполнении на персональном компьютере, неспособен правильно ин- терпретировать полученные результаты, на защите за- труднялся и/или не ответил на большинство вопросов, нуждался в уточняющих вопросах и подсказках со сто- роны преподавателя. 2 Ниже среднего Студент несамостоятельно выполнил практическую ра- боту, неспособен пояснить выполнение ни одного зада- ния, не ответил ни на один контрольный вопрос на за- щите. ПРАКТИЧЕСКАЯ РАБОТА №8,9 РАЗРАБОТКА МНОГООКОННОГО ПРИЛОЖЕНИЯ Цель работы: сформировать практические умения создания многооконного приложения cс фреймами средствами среды программирования VisualStudio. Формируемые компетенции: ОК 2. Организовывать собственную деятельность, выбирать типовые ме- тоды и способы выполнения профессиональных задач, оценивать их эф- фективность и качество. ОК 3. Принимать решения в стандартных и нестандартных ситуациях и нести за них ответственность. 54 ОК 4. Осуществлять поиск и использование информации, необходимой для эффективного выполнения профессиональных задач, профессиональ- ного и личностного развития. ПК 2.2. Программировать в соответствии с требованиями технического задания. ПК 2.3. Применять методики тестирования разрабатываемых приложе- ний. В результате освоения практических заданий обучающийся должен уметь: использовать языки программирования, строить логически пра- вильные и эффективные программы знать: объектно-ориентированную модель программирования, основные алгоритмические конструкции. Материально-техническое обеспечение занятия: персональный компьютер, среда программирования Visual Studio. Практические задания и методические указания Задание 1. Создание главного окна приложения 1. Запустите среду программирования VisualStudio. Создайте новое Прило- жение WindowsForms. Имя проекта и приложения FramesApp. 2. Добавьте в форму главного окна приложения меню (MenuStrip) и строку состояния (StatusStrip). В меню File создайте строку Exit, предназначенную для завершения работы приложения. Напишите обработчик данного собы- тия. 3. Добавьте в окно нашего приложения элемент управления TreeView, перета- щив мышью его значок из панели элементов вкладки Все формы Win- dowsForms в окно формы. Установите значение свойства Dock данного эле- мента управления равным Left. В результате элемент управления TreeView будет выровнен по левой границе главного окна приложения. В нашем при- ложении окно элемента управления TreeView будет использовано для отоб- ражения списка дисков и каталогов. 4. Для элемента управления TreeView создайте разделитель. Для этого пере- тащите значок элемента управления Splitterиз панели элементов вкладки 55 Все формы WindowsForms в окно формы. Разделитель будет автоматиче- ски расположен справа от окна элемента управления TreeView. 5. Элемент управления Splitter имеет свойства, которые можно менять в про- цессе разработки приложения, а также динамически во время его работы. Самое важное свойство разделителя Splitter — это свойство Dock, задающее его расположение. По умолчанию значение этого свойства равно Left, бла- годаря чему разделитель разместился слева от окна дерева TreeView. При необходимости можно изменять расположение разделителя с помощью окна редактирования, аналогичного окну. 6. Перетащите значок элемента управления Panelиз панели элементов вкладки Все формы WindowsForms в окно формы, а затем установите значение свойства Dock этой панели равным Fill. В результате наша панель будет расположена справа от разделителя и займет всю правую часть окна прило- жения. 7. В верхнем окне будет находиться элемент управления ListView, показыва- ющий список файлов и каталогов. Добавьте в окно приложения элемент управления ListView, перетащив его значок из панели элементов вкладки Все формы WindowsForms в окно формы. После установки значения свой- ства Dock, равным Top, и увеличения высоты окна этого элемента управле- ния, главное окно нашего приложения примет следующий вид. 8. Добавьте в правую часть главного окна горизонтальный разделитель Splitter. Перетащите его пиктограмму из панели элементов вкладки Все формы WindowsForms в окно формы, а затем установите значение свойства Dock добавленного разделителя, равным Top. В результате разделитель бу- дет расположен непосредственно под окном элемента управления ListView. 9. В нижней части окна приложения будет находиться элемент управления RichTextBox, предназначенный для отображения дополнительной информа- ции. Перетащите значок элемента управления RichTextBox из панели эле- ментов вкладки Все формы WindowsForms в окно формы и установите зна- чение свойства Dock равным Fill. 56 10. Протестируйте работу приложения. Сохраните полученный проект. Не написав ни единой строчки кода, вы создали простейшее приложение с дей- ствующим многооконным интерфейсом пользователя. Задание 2. Создание методов для элемента управления TreeView 1. Инициализация дерева TreeView осуществляется в конструкторе класса Form1. Для этого необходимо подготовить метод DriveTreeInit. 2. Для обращения к этому методу, а также к другим методам, работающим с дисками, каталогами и файлами, подключите пространство имен System.IO. 3. Перейдите в окно редактирования кода и создайте метод DriveTreeInit: 57 В самом начале своей работы этот метод получает список логических диско- вых устройств, установленных в системе, и сохраняет его в массиве drivesArray. Далее метод DriveTreeInit вызывает метод treeView1.BeginUpdate. Этот метод временно блокирует перерисовку окна дерева до тех пор, пока не будет вызван метод treeView1.EndUpdate. Пара этих методов используется в том случае, когда нужно добавить, удалить или изменить большое количество элементов дерева. Если не заблокировать пе- рерисовку окна, на обновление дерева уйдет слишком много времени. В классе TreeView определено свойство Nodes, хранящее все узлы дерева. Перед тем как приступить к заполнению дерева, метод DriveTreeInit удаля- ет все узлы, вызывая для этого метод treeView1.Nodes.Clear. Заполнение дерева происходит в цикле. Массив drivesArray содержит мас- сив текстовых строк с обозначениями логических устройств, установленных в системе. Для каждого такого устройства в цикле создается объект класса TreeNode — узел дерева. В качестве первого параметра конструктору пере- дается текстовая строка названия устройства. Созданный узел добавляется в набор узлов дерева с помощью метода treeView1.Nodes.Add. В качестве па- раметра этому методу передается ссылка на объект TreeNode, т.е. на добав- ляемый узел. Далее вызывается метод GetDirs, добавляющий в дерево спи- сок содержимого корневого каталога текущего дискового устройства. 4. Метод GetDirs получает в качестве параметра ссылку на узел дерева, кото- рый требуется наполнить списком имен каталогов и файлов. Создайте метод GetDirs. 58 Первым делом метод GetDirs удаляет все элементы из текущего узла, вызы- вая для этого метод node.Nodes.Clear. Далее метод переписывает в переменную fullPath типа string полный путь node.FullPath к узлу дерева. Эта строка получается объединением текстовых строк всех родительских узлов. Если корневой узел хранит текстовую строку обозначения логического диска, то после выполнения этой процедуры в пе- ременной fullPath будет храниться полный путь к файлу или каталогу. Далее для получения содержимого каталога, на который ссылается перемен- ная fullPath, используется метод GetDirectories. При возникновении исклю- чения программа просто возвращает управление, не выполняя над узлом де- рева никаких функций. В том случае если содержимое каталога было успешно получено, оно сохра- няется в массиве diArray. Далее содержимое массива diArray используется для заполнения узла дерева содержимым каталога. 5. Запустите программу на исполнение. В окне дерева появится список диско- вых устройств. Раскрываются ли узлы дерева при щелчке мышью? |