Пошаговое руководство: Наследуйте элемент управления в Windows Forms с помощью C#
С помощью C# можно создавать мощные пользовательские элементы управления через наследование . Благодаря наследованию вы можете создавать элементы управления, которые сохраняют все встроенные функции стандартных элементов управления Windows Forms, но также включают пользовательские функции. В этом пошаговом руководстве вы создадите простой унаследованный элемент управления с именем ValueButton
. Эта кнопка наследует функциональные возможности стандартного элемента управления Windows Forms Button и будет предоставлять пользовательское свойство с именем ButtonValue
.
Создание проекта
При создании нового проекта необходимо указать его имя, чтобы задать корневое пространство имен, имя сборки и имя проекта, а также убедиться, что компонент по умолчанию будет находиться в правильном пространстве имен.
Создание библиотеки элементов управления ValueButtonLib и элемента управления ValueButton
В Visual Studio создайте проект библиотеки элементов управления Windows Forms и присвойте ей имя 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.В меню Файл выберите Сохранить все, чтобы сохранить проект.
Заметка
Визуальный конструктор больше недоступен. Поскольку элемент управления Button самостоятельно занимается отрисовкой, вы не можете изменить его внешний вид в конструкторе. Его визуальное представление будет точно таким же, как у того класса, от которого он наследует (т. е. Button), если не изменено в коде. Вы по-прежнему можете добавлять компоненты, не имеющие элементов пользовательского интерфейса, в область конструктора.
Добавление свойства к унаследованному контролу
Одним из возможных вариантов использования наследуемых элементов управления Windows Forms является создание элементов управления, идентичных в виде и интерфейсе стандартных элементов управления Windows Forms, но предоставление настраиваемых свойств. В этом разделе вы добавите свойство под названием ButtonValue
в элемент управления.
Добавление свойства Value
В обозревателе решенийщелкните правой кнопкой мыши 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 Form.
Чтобы создать элемент управления
В меню Сборка щелкните Сборка решения. Сборка должна быть успешно выполнена без ошибок компилятора или предупреждений.
Создание тестового проекта
В меню файл выберите пункт Добавить и нажмите кнопку Создать проект, чтобы открыть диалоговое окно Добавить новый проект.
Выберите узел Windows под узлом Visual C# и щелкните Windows Forms Application.
В поле Имя введите Тест.
В Обозревателе решенийщелкните правой кнопкой мыши узел Ссылки для тестового проекта, а затем выберите Добавить ссылку в контекстном меню, чтобы отобразить диалоговое окно Добавить ссылку.
Щелкните вкладку, помеченную Проекты. Проект ValueButtonLib будет указан в разделе Имя проекта. Дважды щелкните проект, чтобы добавить ссылку на тестовый проект.
В обозревателе решений щелкните правой кнопкой мыши на Test и выберите Сборка.
Добавление элемента управления в форму
В обозревателе решенийщелкните правой кнопкой мыши Form1.cs и выберите конструктор представлений в контекстном меню.
В панели инструментоввыберите компоненты ValueButtonLib. Дважды щелкните ValueButton.
На форме появится ValueButton.
Щелкните правой кнопкой мыши ValueButton и выберите Свойства в контекстном меню.
В окне свойств проверьте свойства этого элемента управления. Обратите внимание, что они идентичны свойствам, предоставляемым стандартной кнопкой, за исключением того, что существует дополнительное свойство ButtonValue.
Задайте свойству ButtonValue значение 5.
На вкладке Все Windows Forms в Панель элементов, дважды щелкните Метка, чтобы добавить элемент управления Label в форму.
Переместите метку в центр формы.
Дважды щелкните
valueButton1
.Откроется редактор кода
для события . Вставьте следующую строку кода.
label1.Text = valueButton1.ButtonValue.ToString();
В Обозревателе решений щелкните правой кнопкой мыши Тести выберите Установить как запускаемый проект в контекстном меню.
В меню Отладка выберите Начать отладку.
появится
Form1
.Щелкните
valueButton1
.Число "5" отображается в
label1
, демонстрируя, что свойствоButtonValue
унаследованного элемента управления было переданоlabel1
через методvalueButton1_Click
. Таким образом, элемент управленияValueButton
наследует все функциональные возможности стандартной кнопки Windows Forms, но предоставляет дополнительное пользовательское свойство.
См. также
.NET Desktop feedback