Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 курс 2 семестр / ССВП / Методические указания ЛР 3

.doc
Скачиваний:
65
Добавлен:
12.02.2015
Размер:
1.64 Mб
Скачать

Лабораторная работа № 3.

В данной лабораторной работе необходимо разработать MDI приложение для создания буклетов трех различных типов. Родительская MDI форма имеет главное меню и панель инструментов с кнопками, дублирующими пункты меню. Дочерние формы создаются методом визуального наследования от одной базовой формы, и затем вносятся необходимые изменения. Все проверки данных должны быть закодированы в базовой форме, от которой производится наследование.

Рассмотрим создание базовой формы, от которой будут наследоваться дочерние формы MDI приложения. Интерфейс пользователя будет таким, как показано на рисунке 4.14.

Рисунок 4.14: Интерфейс пользователя в приложении для создания брошюр (буклетов – pamphlets)

Это приложение предназначено для создания брошюры, буклета (pamphlet) во время исполнения с значениями, задаваемыми пользователем. Текстовые панели контролируются на предмет того, что они не остались пустыми (не заполненными). Кроме того, значение, введенное в поле Contact Number, должно быть числом, а значение в поле Last date of contact должно иметь формат даты и содержать значение по умолчанию – текущую дату. Группа кнопок в нижней части окна становится доступной только тогда, когда введены значения во все текстовые поля в верхней части. Пользователь может добавить либо изображение, либо текст в буклет. Если пользователь хочет добавить изображение, то для этого доступна кнопка ‘Open’ (Открыть), и пользователь может выбрать файл изображения из диалогового окна Open file (Открыть файл). Цвет и шрифт для текста в текстовой панели с форматированием могут быть изменены с помощью диалогового окна Font (Шрифт). Причем, если в панели с форматированием есть выделенный текст, то установки шрифта будут относиться к выделенному тексту, а если нет, то к текстовым полям в верхней части формы. Диалоговое окно Color (Цвет) используется для изменения цвета надписей перед текстовыми полями в верхней части окна и на кнопках внизу. Диалоговые окна Font (Шрифт) и Color (Цвет) выводятся, когда пользователь щёлкает по кнопкам ‘Font’ и ‘Color’ соответственно. При щелчке по кнопке ’Print’ (Печать) пользователь может предварительно просмотреть документ, который готовится к печати, или сразу распечатать этот документ.

Наследование (Inheritance) избавляет пользователя от необходимости повторно вводить код и предоставляет богатые возможности повторного использования кода. По аналогии становится понятным, что это позволяет сэкономить огромное количество времени, если возможно также наследовать интерфейс пользователя. Winforms поддерживает наследование интерфейса пользователя. Это означает, что мы можем создать базовую форму, которая обеспечивает функциональность, необходимую для создания буклета, а затем от этой формы можно выполнить наследование в любой момент, когда это необходимо при создании буклета. Например, если компания по производству косметики желает рекламировать свой новый крем для лица с помощью этого буклета, то можно выполнить наследование данной формы в приложении и использовать для создания буклетов с внесением некоторых изменений и дополнений в базовой форме. Шаги, выполняемые для преобразования проекта ‘Pamphletcreation’ в базовую форму, приведены ниже:

  • Щелчок правой кнопкой мыши по имени проекта, Pamphletcreation, в Solution Explorer (Обозреватель решений), затем выбрать Properties (Свойства).

Примечание: Solution Explorer (Обозреватель решений) – это окно, которое выводит и обеспечивает доступ к организованному представлению проекта и различным его файлам, таким, как имя формы и ссылки. Чтобы получить доступ к Solution Explorer (Обозревателю решений) проекта, необходимо выбрать пункт Solution Explorer в меню View.

    • Изменить Output type (тип вывода) проекта на Class library (Библиотека классов).

При установке типа вывода (Output type) в Class library, мы обеспечиваем для формы возможность компиляции в виде библиотеки классов Class Library (DLL), которая может быть наследуемой, как выполняемая форма. На рисунке 4.15 показано окно Properties (Свойства) проекта Pamphletcreation, где для Output type (тип вывода) установлено значение Class Library (библиотека классов).

Рисунок 4.15: Окно Properties (Свойства) проекта Pamphletcreation

Примечание: Перед сборкой решения убедитесь в том, что модификаторы доступа элементов управления, которые Вы планируете изменять в формах-наследниках, имеют значение public или protected.

  • Создать (собрать) решение.

Шаги, выполняемые для наследования базовой формы в новом проекте:

    • Открыть новый проект.

    • Активизировать радио кнопку Add to Solution (Добавить к решению).

На рисунке 4.16 показан Solution Explorer (Обозреватель решений) после того, как был создан новый проект. Отметим, что теперь в одном решении объединены два проекта.

Рисунок 4.16: Solution Explorer – Обозреватель решений

    • Добавить ссылку на библиотеку классов базовой формы (Base form class library), щёлкнув правой кнопкой мыши по проекту NewPamphletCreation, затем щёлкнуть по пункту Add Reference (Добавить ссылку) в контекстном меню.

На рисунке 4.17 показано окно Add reference (Добавить ссылку).

Рисунок 4.17: Окно Add Reference

    • Переместиться на закладку Projects (Проекты).

  • Двойной щелчок по проекту Pamphletcreation, затем щёлкнуть по кнопке OK, чтобы добавить ссылку.

  • Щелчок правой кнопкой мыши по проекту NewPamphletcreation, затем выбрать пункт Add (Добавить)Add Inherited Form (Добавить наследуемую форму). Выводится диалоговое окно Add New Item, как показано на рисунке 4.18.

Рисунок 4.18: Диалоговое окно Add New Item (Добавить новый компонент)

  • Выбрать пункт Inherited Form (Наследуемая форма). В проекте “NewPamphletcreation” уже существует форма, названная Form1. Таким образом, новая форма, которая должна быть создана наследованием от базовой формы, получает имя Form 2.

  • Щёлкнуть по кнопке Open (Открыть). Открывается диалоговое окно Inheritance Picker, как показано на рисунке 4.19.

Рисунок 4.19: Окно Inheritance Picker (Выбор объекта наследования)

  • Выбрать Form1 проекта Pamphletcreation и щёлкнуть по кнопке OK.

Форма, созданная при помощи наследования от базового класса, показана на рисунке 4.20.

Рисунок 4.20: Форма, созданная наследованием от базового класса

Отметим, что около каждого элемента управления выведен значок , обозначающий, что данный элемент является результатом наследования. Теперь заголовок в надписи “Name of the organization” может быть изменён на “Name of the Product” (Название товара). Могут быть также внесены и другие изменения в форму. События базовой формы и её элементы управления также наследуются вместе с интерфейсом пользователя в новой форме. Поскольку новая форма не имеет основного (main) метода, она не может быть запущена автономно. Для проверки работы можно добавить функцию main, аналогичную представленной в проекте Pamphletcreation. В MDI приложении для дочерних форм функция main не нужна.

В главном меню родительской MDI формы необходимо предусмотреть пункты:

1. Буклет (с подпунктами, вызывающими различные дочерние формы).

2. Вид – для переключения представления открытых дочерних окон каскадом или мозаикой.

3. Окно – для вывода списка открытых дочерних форм.

4. Выравнивание – с подпунктами для выравнивания текста в панели с форматированием дочерних форм по левому краю, по правому краю, или по центру.

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

Form activeChild = this.ActiveMdiChild;

if (activeChild != null)

{

try

{

RichTextBox theBox = (RichTextBox)activeChild.ActiveControl;

if (theBox != null)

{

theBox.SelectionAlignment = HorizontalAlignment.Right;

}

}

catch

{

MessageBox.Show("You need to select a RichTextBox.");

}

}