Наследование форм ( Windows Forms) и элементов управления.
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Наследование форм ( Windows Forms) и элементов управления.
Создание новых форм Windows Forms путем наследования базовых форм позволяет
существенно увеличить производительность и избежать усилий на повторное создание
форм.
I.
Чтобы унаследовать форму, необходимо собрать файл или пространство имен, содержащее
данную форму, в исполняемый файл или библиотеку DLL. Чтобы построить проект, в меню
Построение выберите команду Построить. Также необходимо добавить ссылку на пространство
имен в класс, который наследует форму. Отображаемые диалоговые окна и команды меню могут
отличаться от описанных в справке в зависимости от текущих настроек или версии среды. Для
изменения параметров выберите в меню Сервис команду Параметры импорта и экспорта.
Чтобы унаследовать форму программными средствами
1. В классе добавьте ссылку на пространство имен, содержащее форму, которую
требуется унаследовать.
2. В описании класса добавьте ссылку на форму, которую требуется унаследовать.
Ссылка должна содержать пространство имен, в котором находится форма, точку
после него, а затем — имя базовой формы.
public class Form2 : Namespace1.Form1
При наследовании форм следует иметь в виду вопросы, связанные с обработчиками
событий, которые вызываются дважды, так как каждое событие обрабатывается базовым
классом и унаследованным классом.
II.
Самым простым способом наследования формы или другого объекта является
использование диалогового окна Выбор наследования. С его помощью можно
использовать преимущества кода или интерфейса пользователя, уже созданного в других
решениях.
Чтобы наследовать из формы с помощью диалогового окна Выбор наследования,
необходимо встроить содержащий форму проект в исполняемый файл или библиотеку
DLL. Чтобы построить проект, в меню Построить решение выберите команду Построить.
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в
справке в зависимости от текущих настроек или версии среды. Для изменения параметров
в меню Сервис выберите пункт Импорт и экспорт параметров.
Чтобы создать наследуемую из существующей формы форму Windows Forms с
помощью диалогового окна "Выбор наследования", выполните следующие
действия.
1. В меню Проект выберите Добавить форму Windows .
Откроется диалоговое окно Добавление нового элемента.
2. Выберите шаблон Наследуемая форма и введите имя формы в поле Имя. Для
продолжения нажмите кнопку Добавить.
Откроется диалоговое окно Выбор наследования. Если в текущем проекте уже есть
формы, они отобразятся в диалоговом окне Выбор наследования.
3. Для наследования из формы в другой сборке нажмите кнопку Обзор.
4. В диалоговом окне Выберите файл, содержащий компонент, параметры которого
требуется наследовать перейдите к проекту, содержащему требуемую форму или
модуль.
5. Щелкните имя EXE- или DLL-файла, чтобы его выбрать, и нажмите кнопку
Открыть.
Это действие осуществляет возврат в диалоговое окно Выбор наследования, где
соответствующий компонент теперь указан вместе с проектом, в котором он
расположен.
6. Выделите компонент.
Компонент добавляется к проекту в Обозревателе решений. При наличии в проекте
интерфейса пользователя элементы управления являются частью наследуемой
формы, помеченной глифом ( ), и при выделении указывающей границу уровня
безопасности элемента управления в форме базового класса. В следующей таблице
описаны поведения, соответствующие различным уровням безопасности.
Уровень
безопасности
элемента
управления
Доступное взаимодействие с наследуемой
посредством конструктора и редактора кода
формой
Стандартная граница с дескрипторами размера: можно
изменять размеры и расположение элемента управления.
Public
Элемент управления может быть внутренне доступен классу,
объявляющему его, и внешне – другим классам.
Стандартная граница с дескрипторами размера: можно
изменять размеры и расположение элемента управления.
Protected
Может быть внутренне доступен классу, объявляющему его, и
любому классу, который наследуется из родительского класса,
но не внешним классам.
Стандартная граница с дескрипторами размера: можно
Protected Internal изменять размеры и расположение элемента управления.
(Protected Friend в Может быть внутренне доступен классу, объявляющему его, и
Visual Basic)
любому классу, который наследуется из родительского класса,
и другим членам сборки, в которой он содержится.
Стандартная граница без дескрипторов размера, отображаемая
в форме и свойствах, видимых в окне Свойства. Тем не менее,
все аспекты элемента управления рассматриваются как
Internal (Friend в доступные только для чтения. Нельзя изменить расположение,
Visual Basic)
размер или свойства элемента управления. Если элемент
управления является контейнером для других элементов
управления, аналогично группам, нельзя добавить новые
элементы управления или удалить существующие, даже если
Private
эти элементы управления являются открытыми. Доступ к
элементу управления разрешен только для других членов
сборки, в которой он содержится.
Стандартная граница без дескрипторов размера, отображаемая
в форме и свойствах, видимых в окне Свойства. Тем не менее,
все аспекты элемента управления рассматриваются как
доступные только для чтения. Нельзя изменить расположение,
размер или свойства элемента управления. Если элемент
управления является контейнером для других элементов
управления, аналогично группам, нельзя добавить новые
элементы управления или удалить существующие, даже если
эти элементы управления являются открытыми. Доступ к
элементу управления разрешен только для объявляющего его
класса.
III. Визуальное наследование позволяет просматривать элементы управления в базовой
форме и добавлять новые элементы управления. Рассмотрим создание базовой формы и
компиляцию этой формы в библиотеку классов. После этого библиотека класса
импортируется в другой проект, и создается новая форма, унаследованная от базовой
формы. Основные этапы:
Создать проект библиотеки классов, содержащий базовую форму.
Добавить кнопку, соответствующую свойствам, которые могут быть изменены
производными классами базовой формы.
Добавить кнопку, которая не может изменяться наследниками базовой формы.
Создать проект, содержащий форму, которая наследуется из BaseForm.
В данном проекте описывается различие между закрытыми и защищенными элементами
управления в наследуемой форме.
Первым шагом является создание базовой формы.
Чтобы создать проект библиотеки классов, содержащий базовую форму, выполните
следующие действия.
1. В меню Файл выберите Создать и щелкните пункт Проект, чтобы открыть
диалоговое окно Создание проекта.
2. Создайте приложение Windows Forms с именем BaseFormLibrary..
3. Чтобы создать библиотеку классов вместо стандартного приложения Windows
Forms, щелкните правой кнопкой мыши узел проекта BaseFormLibrary в
Обозревателе решений и выберите пункт Свойства.
4. В свойствах проекта измените Тип выходного файла с Приложение Windows на
Библиотека классов.
5. В меню Файл выберите Сохранить все, чтобы сохранить проект и файлы в
расположении по умолчанию.
Следующие две процедуры добавляют кнопки в базовую форму. Чтобы
продемонстрировать визуальное наследование, установите для кнопок различные уровни
доступа, задав их свойства Modifiers.
Чтобы добавить кнопку, которая может изменяться наследниками базовой формы,
выполните следующие действия.
1. Откройте форму Form1 в конструкторе.
2. На вкладке Все формы Windows Forms Панели элементов дважды щелкните
элемент Кнопка, чтобы добавить кнопку на форму. С помощью мыши определите
положение и размер кнопки.
3. В окне "Свойства" задайте следующие свойства кнопки.
o Задайте свойству Текст значение для Привет.
o Задайте для свойства (Имя) значение btnProtected.
o Задайте для свойства Modifiers значение Protected. Это позволяет формам,
наследуемым от формы Form1, изменять свойства со значением btnProtected.
4. Дважды щелкните кнопку Привет, чтобы добавить обработчик событий Click для
данной кнопки.
5. Добавьте следующую строку кода в обработчик событий:
МessageBox.Show("Hello, World!");
Чтобы добавить кнопку, которая не может изменяться наследниками базовой
формы, выполните следующие действия.
1. Переключитесь в режим разработки, щелкнув вкладку Form1.cs [Design] над
редактором кода или нажав клавишу F7.
2. Добавьте вторую кнопку и установите ее свойства следующим образом.
o Задайте свойству Текст значение для Пока.
o Задайте для свойства (Имя) значение btnPrivate.
o Задайте для свойства Modifiers значение Private. Это не позволит формам,
наследуемым от формы Form1, изменять свойства со значением btnPrivate.
3. Дважды щелкните кнопку Пока, чтобы добавить обработчик событий Click для
данной кнопки. Добавьте следующую строку кода в процедуру обработки события:
MessageBox.Show("Goodbye!");
4. В меню Построение выберите команду Построить BaseForm Library, чтобы
построить библиотеку классов.
После построения библиотеки можно создать новый проект, наследуемый из уже
созданной формы.
Чтобы создать проект, содержащий форму, которая наследуется из базовой формы,
выполните следующие действия.
1. В меню Файл выберите Добавить и выберите Создать проект, чтобы открыть
диалоговое окно Добавить новый проект.
2. Создайте приложение Windows Forms с именем InheritanceTest..
Чтобы добавить наследуемую форму, выполните следующие действия.
1. В Обозревателе решений щелкните правой кнопкой мыши проект InheritanceTest,
выберите команду Добавить, а затем Добавить новый элемент.
2. В диалоговом окне Добавить новый элемент выберите категорию Формы Windows
Forms (если отображается список категорий) и выберите шаблон Наследуемая
форма.
3. Оставьте имя по умолчанию Form2 и нажмите кнопку Добавить.
4. В диалоговом окне Выбор наследования выберите форму Form1 из проекта
BaseFormLibrary в качестве формы, от которой производится наследование, и
нажмите кнопку ОК.
При этом создается форма в проекте InheritanceTest, наследуемая от формы в
BaseFormLibrary.
5. Откройте наследуемую форму (Form2) в конструкторе, дважды щелкнув ее, если
она еще не была открыта.
В конструкторе унаследованные кнопки имеют символ ( ) в верхнем углу,
показывающий, что они унаследованные.
6. Выберите кнопку Привет и просмотрите дескрипторы изменения размера. Так как
данная кнопка защищена, наследники могут передвигать ее, изменять ее размер и
заголовок и производить другие модификации.
7. Выберите закрытую кнопку Пока и обратите внимание, что маркеры изменения
размера отсутствуют. Кроме того, свойства этой кнопки в окне Свойства
отображены серым цветом, что показывает невозможность их изменения.
8. При использования Visual C#:
1. В Обозревателе решений щелкните правой кнопкой мыши форму Form1 в
проекте InheritanceTest и выберите Удалить. В появившемся окне
сообщений для подтверждения удаления нажмите кнопку ОК.
2. Откройте файл Program.cs и удалите строку Application.Run(new Form1());.
3. Откройте форму Form2 в режиме просмотра кода.
4. Добавьте следующий метод прямо перед строкой, которая читает public
Form2(). Это позволит форме Form2 выступать в роли объекта запуска.
C#
static void Main()
{
Application.Run(new Form2());
}
9. В Обозревателе решений щелкните правой кнопкой мыши проект InheritanceTest и
выберите Установить как запускаемый проект.
10. В Обозревателе решений щелкните правой кнопкой мыши проект InheritanceTest и
выберите Свойства.
11. На страницах свойств InheritanceTest задайте Начальный объект как наследуемую
форму (Form2).
12. Нажмите клавишу F5 для запуска приложения и проверьте работу наследуемой
формы.