Пошаговое руководство. Наследование элементов управления Windows Forms с помощью Visual C#
С помощью Visual C# 2005 можно создавать эффективные настраиваемые элементы управления путем наследования. Наследование позволяет создавать элементы управления, сохраняющие все унаследованные функциональные возможности элементов управления Windows Forms и в то же время обладающие дополнительными функциями. В этом пошаговом руководстве вы создадите простой производный элемент управления с именем ValueButton
. Эта кнопка наследует функциональные возможности стандартных форм Windows Button управления и предоставляет настраиваемое свойство ButtonValue
.
Note
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров . Дополнительные сведения см. в разделе Персонализация интегрированной среды разработки Visual Studio.
Создание проекта
Создавая проект, вы указываете для него имя, чтобы задать корневое пространство имен, имя сборки и имя проекта, и необходимо убедиться в том, что компонент по умолчанию попадет в нужное пространство имен.
Создание библиотеки элементов управления ValueButtonLib и элемента управления ValueButton
В меню Файл наведите указатель мыши на пункт Создать и выберите Проект, чтобы открыть диалоговое окно Создание проекта.
Выберите Библиотека элементов управления Windows Forms шаблон проекта из списка проектов Visual C#, а также тип
ValueButtonLib
в имя поле.Имя проекта,
ValueButtonLib
, по умолчанию также назначается корневому пространству имен. Корневое пространство имен используется для определения имен компонентов в сборке. Например, если в двух сборках содержатся компоненты с именемValueButton
, можно указать компонентValueButton
, используяValueButtonLib.ValueButton
. Дополнительные сведения см. в разделе Пространства имен.В обозревателе решений щелкните правой кнопкой мыши UserControl1.cs и выберите в контекстном меню команду Переименовать. Измените имя файла на
ValueButton.cs
. Чтобы переименовать все ссылки на элемент кода 'UserControl1
', в соответствующем запросе нажмите кнопку Да.В обозревателе решений щелкните правой кнопкой мыши файл ValueButton.cs и выберите команду Просмотреть код.
Найдите
class
строка инструкцииpublic partial class ValueButton
и измените тип, из которого наследуется этот элемент управления из UserControl для Button. Это позволяет элементу управления унаследовать все функции из Button элемента управления.В обозревателе решений откройте узел ValueButton.cs, чтобы отобразить сформированный конструктором файл кода ValueButton.Designer.cs. Откройте этот файл в редакторе кода.
Найдите
InitializeComponent
метод и удалить строку, назначающую AutoScaleMode свойство. Это свойство не существует в Button элемента управления.Сохраните проект, выбрав в меню Файл команду Сохранить все.
Note
Визуальный конструктор больше не доступен. Так как Button элемент управления имеет собственное оформление, вы не сможете изменить его внешний вид в конструкторе. Визуальное представление будет иметь точно так же, как он наследует от класса (то есть Button) Если изменения в код. В область конструктора по-прежнему можно добавлять компоненты, не имеющие элементов пользовательского интерфейса.
Добавление свойства в наследуемый элемент управления
Один из возможных способов использования наследуемых элементов управления форм Windows Forms — это создание элементов управления, имеющих такой же внешний вид и функции, как у стандартных элементов управления Windows Forms, но предоставляющих настраиваемые свойства. В этом разделе вы добавите в элемент управления свойство с именем ButtonValue
.
Добавьте значение свойства
В обозревателе решений щелкните правой кнопкой мыши ValueButton.cs и выберите в контекстном меню пункт Просмотреть код.
Найдите оператор
class
. Сразу после{
введите следующий код.// Creates the private variable that will store the value of your // property. private int varValue; // Declares the property. public int ButtonValue { // Sets the method for retrieving the value of your property. get { return varValue; } // Sets the method for setting the value of your property. set { varValue = value; } }
Этот код определяет методы хранения и извлечения свойства
ButtonValue
. Операторget
определяет значение, возвращаемое значению, которое хранится в закрытой переменнойvarValue
, а операторset
задает значение закрытой переменной с помощью ключевого словаvalue
.Сохраните проект, выбрав в меню Файл команду Сохранить все.
Тестирование элемента управления
Элементы управления не являются автономными проектами и должны размещаться в контейнере. Чтобы протестировать элемент управления, необходимо предоставить тестовый проект, в котором он будет выполняться. Кроме того, нужно сделать элемент управления доступным для тестового проекта, выполнив сборку (компиляцию). В этом разделе вы выполните сборку элемента управления и протестируете его в Windows Forms.
Сборка элемента управления
В меню Сборка выберите Собрать решение.
Сборка должна быть выполнена без ошибок компилятора и предупреждений.
Создание тестового проекта
В меню Файл наведите указатель мыши на пункт Добавить и выберите Проект, чтобы открыть диалоговое окно Добавление нового проекта.
Выберите узел Windows под узлом Visual C# и выберите приложение Windows Forms.
В поле Имя введите
Test
.В обозревателе решений щелкните узел Ссылки для тестового проекта правой кнопкой мыши и выберите в контекстном меню пункт Добавить ссылку, чтобы открыть диалоговое окно Добавление ссылки.
Выберите вкладку Проекты. Проект
ValueButtonLib
будет указан под полем Имя проекта. Дважды щелкните проект, чтобы добавить ссылку на тестовый проект.В обозревателе решений щелкните Тест правой кнопкой мыши и выберите пункт Построить.
Добавление элемента управления в форму
В обозревателе решений щелкните правой кнопкой мыши файл Form1.cs и выберите в контекстном меню пункт Конструктор представлений.
На панели элементов выберите Компоненты ValueButtonLib. Дважды щелкните ValueButton.
Объект ValueButton появится в форме.
Щелкните ValueButton правой кнопкой мыши и выберите в контекстном меню пункт Свойства.
В окне Свойства проверьте свойства этого элемента управления. Обратите внимание, что они идентичны свойствам стандартной кнопки, кроме дополнительного свойства
ButtonValue
.Задайте для свойства
ButtonValue
значение5
.В все формы Windows Forms вкладке элементов, дважды щелкните метка добавление Label форму элемента управления.
Переместите метку в центр формы.
Дважды щелкните файл
valueButton1
.В редакторе кода откроется событие
valueButton1_Click
.Вставьте следующую строку кода.
label1.Text = valueButton1.ButtonValue.ToString();
В обозревателе решений щелкните Тест правой кнопкой мыши и выберите в контекстном меню команду Назначить автозагружаемым проектом.
В меню Отладка выберите пункт Начать отладку.
Form1
отображается.Нажмите кнопку
valueButton1
.В
label1
появится цифра 5, показывающая, что свойствоButtonValue
унаследованного элемента управления переданоlabel1
с помощью методаvalueButton1_Click
. Таким образом, ваш элемент управленияValueButton
наследует функциональные возможности стандартной кнопки Windows Forms и при этом предоставляет дополнительное настраиваемое свойство.