Ход работы:
-
Изучить теоретическую часть.
-
Выполнить задания, следуя указаниям.
-
Ответить на контрольные вопросы (в устной форме).
-
Предъявить преподавателю результаты работы программы и исходные коды.
-
Оформить отчет в соответствии с ходом работы (тема, цель, условие задачи, программный код, результаты тестирования программы, выводы).
Теоретическая часть
Что такое MDI?
MDI-форма, которую также называют родительской, представляет собой контейнер для дочерних форм приложения.MDI-форма имеет ряд характеристик:
Создаваемое приложение может иметь только одну MDI-форму.
На панели задач Windows представляется лишь исходное MDI-окно, а все остальные дочерние окна на панели задач не представляются.
При минимизации MDI-окна, минимизируются и все дочерние окна. При восстановлении - восстанавливаются.
MDI расшифровывается как multipledocumentinterface (многодокументный интерфейс). В приложениях с MDI, в основном (родительском) окне можно окрыть более одного дочернего окна. Данная возможность обычно используется в электронных таблицах или текстовых редакторах.
В прежних версиях VB при программировании приложений с интерфейсом MDI (MultipleDocumentInterface) родительская форма MDI выбиралась на стадии конструирования. В .NET эта задача решается иначе – свойству IsMdiContainer формы задается значение True. Программист создает дочерние формы MDI на стадии конструирования или выполнения, а затем заносит в их свойство MdiParent ссылку на форму со свойством IsMdiContainer, равным True.
Таким образом, в программах VB.NET можно сделать то, что было практически нереально в предыдущих версиях VB, – изменять связи MDI во время работы программы. Кроме того, приложение может содержать несколько родительских форм MDI; в VB6 такая возможность не поддерживалась.
Рассмотрим пример. Создайте приложение со следующей процедурой Forml_Load:
Конечно, это весьма жалкое подобие приложения MDI. В приложениях MDI обычно присутствует меню Window, позволяющее расположить открытые дочерние окна "черепицей" или "мозаикой", а также активизировать любое дочернее окно.
Задание на лабораторную работу.
Создать программу, позволяющую просматривать графические файлы, таким образом, чтобы каждый выбранный графический файл открывался в новом дочернем окне.
Для этого нам потребуются следующие компоненты:
компонент MainMenu, который мы будем использовать для открытия диалоговой панели для выбора файлов;
компонент OpenFileDialog, который будет использоваться для выбора графического файла;
компонент PictureBox, в котором мы будем отображать содержимое графического файла.
Создание пользовательского интерфейса
Создайте новый проект командой Создать проект (NewProject) из меню Файл (File) (порядок создания нового проекта подробно описан в лабораторной работе № 1).
Выберите элемент Приложение Windows Forms и нажмите кнопку ОК.
Добавьте на форму компоненты MainMenu, OpenFileDialog, PictureBox.
Настройка свойств
Задайте для формы свойство Text равным GraphicsView.
Далее значение свойства StartPositionизмените на CenterScreen — в результате наше приложение всегда будет отображаться в середине экрана.
Если вы хотите, чтобы размер окна нельзя было изменить, установите значение FormBorderStyle равным FixedSingle или Fixed3D. В противном случае при изменении размера окна нарушится расположение элементов внутри него.
-
Для элемента PictureBox установите трехмерную рамку (BorderStyle = Fixed3D), а также измените свойство Anchor — с его помощью вы укажете, как должны изменяться размеры элемента в зависимости от размеров окна.
С помощью компонента MainMenu создайте элемент File и два подэлемента — Open и Exit. Для этого воспользуйтесь редактором меню, предоставляемым VisualStudio .NET и вызываемым при щелчке мышью по компоненту MainMenu.
Написание кода
После того как меню готово, необходимо написать код, который будет выполняться при выборе той или иной команды. Для этого дважды щелкните мышью по соответствующей команде и попадете в редактор кода.
Для команды File | Open напишите следующий код:
В первой строке мы создаем переменную типа Bitmap, в которую будем загружать содержимое выбранного нами графического файла. Затем мы вызываем метод ShowDialog объекта OpenFileDialog, чтобы отобразить на экране панель выбора файлов. Если файл выбран и нажата кнопка Open, мы выполняем следующие действия:
задаем режим отображения графики в компоненте PictureBox — в нашем примере графика должна быть «растянута» во весь размер компонента;
создаем новый экземпляр объекта Bitmap, в который загружаем содержимое выбранного нами файла;
отображаем содержимое объекта Bitmap в компоненте PictureBox.
Для команды File | Exit мы напишите следующий код:
Выполнение этого кода приведет к завершению приложения и к закрытию его окна.
Создание MDI-приложений
После того как вы освоили создание меню, измените функциональность приложения таким образом, чтобы каждый выбранный графический файл открывался в новом дочернем окне, то есть превратите однооконное приложение в MultipleDocumentInterface (MDI)-приложение.
Создание MDI-приложения начинается с того, что изменяется свойство IsMDIContainer формы и присваивается ему значение True.
После этого мы используйте команду Проект/Добавить форму (Project | AddWindowsForm) для добавления к проекту еще одной формы, которая будет служить в качестве дочерней формы. В диалоговой панелиДобавить новый элемент (AddNewItem) выберите элемент WindowsForm и нажимите кнопку Открыть (Open).
Перенесите компонент PictureBox из главной формы приложения в дочернюю форму. Для этого следует выбрать компонент PictureBox, нажать клавишу Ctrl-X, затем перейти на дочернюю форму и нажать клавишу Ctrl-V.
Ваше MDI-приложение практически готово —осталось лишь изменить код, выполняющийся при выборе команды File|Open:
Сначала мы создаем переменную Child, которая имеет тип Form2 и будет использоваться для создания дочерних форм. Затем указываем родительское окно дочерней формы — ключевое слово Me используется в VisualBasic для указания текущего класса. Поскольку компонент PictureBox теперь располагается в дочернем окне, мы изменяем способ обращения к нему. После того как графика загружена, мы показываем нашу дочернюю форму на экране.
Для того чтобы сделать приложение более удобным, давайте показывать в заголовке дочернего окна полное имя отображаемого в нем файла. Для этого добавьте в код обработчика события следующую строку:
Если же мы вы хотите отобразить только имя файла, нам надо написать такой код:
и добавить ссылку на пространство имен System.IO в самом начале кода нашей программы:
Теперь добавьте код, который позволит управлять дочерними окнами. Для этого создайте еще один пункт меню — Childs и добавьте в него следующие элементы: TileHorizontal; TileVertical; Cascade; ArrangeIcons.
Затем напишите код для каждой из команд:
КомандаTileHorizontal
КомандаTileVertical
Команда Cascade
Команда ArrangeIcons
Включите еще одну возможность — меню для переключения между окнами. Добавьте к главному меню элемент Window и измените значение его свойства MdiList на True.
Теперь используйте еще один компонент — ContextMenu, который позволит изменять способ отображения графики в компоненте PictureBox. Добавьте компонент ContextMenu к дочерней форме и создайте в нем следующие элементы: Normal; Center; Stretch; Autosize, которые повторяют все возможные значения свойства SizeMode компонента PictureBox.
Установите свойство ContextMenu компонента PictureBox в ContextMenu1. Затем напишите код, который будет выполняться при вызове каждой из команд контекстного меню:
После этого надо удалить строку:
из обработчика события выбора команды File | Open в главном меню нашего приложения.
Запустите и протестируйте MDI-приложение
Контрольные вопросы:
Опишите форму MDI.
Какое свойство необходимо изменить для родительской формы MDI.
Назначение оператора в программе.
Поясните следующий код
.
Что дает использование строки кода :
Список использованных источников
-
http://msdn.microsoft.com/ru-ru/library/vstudio/jj159353.aspx Msdn.microsoft.com: Средства и языки разработки
http://www.intuit.ru/studies/courses/78/78/info Intuit.ru: Visual Basic.NET
Аляев Ю., Козлов О. Алгоритмизация и языки программирования Pascal, C++, Visual Basic. – М.: Финансы и статистика, 2011.
Голицына О.Л., Попов И.И. Основы алгоритмизации и программирования: Учебное пособие.– М.: Форум: Инфра-М, 2009.
Грейди Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++ /Пер. с англ. – 2-е изд.– М.: Бином, 2010.
Давыдова Н.А., Боровская Е.В., Программирование. Учебное пособие. Интуит.ру, 2011г.
Джеймс Фокселл. Освой самостоятельно Visual Basic.NET за 24 часа. – М.: Вильямс, 2012.
Дэн Кларк. Объектно-ориентированное программирование в Visual Basic .NET. – СПб.: Питер, 2009.
Зак Д. Самоучитель Visual Basic.Net. – Киев:ВНV; СПб.: Питер, 2010.
Кетков Ю., Кетков А. Практика программирования: Visual Basic, С++Builder. – СПб.: BHV, 2010.
Маккей А., «Введение в .NET 4.0 и Visual Studio 2010 для профессионалов», 2010
Ник Рендольф, Дэвид Гарднер, Крис Андерсон, Майкл Минутилло, Visual Studio 2010 для профессионалов, «ДИАЛЕКТИКА», 2011
Пономарев В. Visual Basic.NET: – Экспресс-курс. – СПб.: BHV - Санкт - Петербург, 2010.
Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. – М.: Мастерство, 2011.
-
Федоров А., Microsoft Visual Studio 2010: Первое знакомство, «Microsoft», 2009
|