Использование Visual C# для создания объекта UserControl в качестве контейнера элемента управления во время разработки
В этой статье содержатся сведения о том, как сделать объект UserControl контейнером элементов управления во время разработки после добавления объекта UserControl в Форму Windows Form.
Исходная версия продукта: Visual C#
Оригинальный номер базы знаний: 813450
Сводка
В этой статье описывается пространство System.ComponentModel
имен библиотеки классов Microsoft платформа .NET Framework .
В этой пошаговой статье описывается, как сделать объект UserControl контейнером элементов управления во время разработки после того, как вы поместили элемент UserControl в Форму Windows Form. Могут возникнуть ситуации, когда требуется перетащить элемент управления в Элемент управления UserControl. Для этого UserControl должен выступать в качестве контейнера элементов управления.
По умолчанию объект UserControl может выступать в качестве контейнера элемента управления только при создании элемента управления. Чтобы сделать узел UserControl составным элементом управления после добавления элемента UserControl в Форму Windows Form, необходимо изменить конструктор userControl по умолчанию. Чтобы реализовать службы времени разработки DesignerAttribute
для компонента, используйте класс System.ComponentModel
пространства имен. Объект DesignerAttribute
поставляется перед объявлением класса. Инициализируйте , DesignerAttribute
передав параметры designerTypeName
и designerBaseType
.
designerTypeName
— это полное имя типа конструктора, предоставляющего службы времени разработки. Передайте сочетание объекта System.Windows.Forms.Design.ParentControlDesigner
и для System.Design
designerTypeName
параметра . Класс ParentControlDesigner
расширяет поведение userControl во время разработки.
designerBaseType
— это имя базового класса для конструктора. Класс, используемый для служб времени разработки, должен реализовывать интерфейс IDesigner.
Создание элемента управления UserControl в качестве контейнера элементов управления времени разработки
Создайте проект библиотеки элементов управления Windows visual C#. Для этого выполните следующие действия:
- Запустите Visual Studio.
- В меню Файл выберите пункт Создать и затем пункт Проект.
- В разделе Типы проектов щелкните Visual C#, а затем выберите Windows Forms библиотека элементов управления в разделе Шаблоны.
Присвойте проекту имя ContainerUserControl. По умолчанию создается UserControl1.cs .
В Обозреватель решений щелкните правой кнопкой мыши UserControl1.cs и выберите пункт Просмотреть код.
Добавьте следующий код в раздел объявлений:
using System.ComponentModel.Design;
Примените
System.ComponentModel.DesignerAttribute
атрибут к элементу управления следующим образом:[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public class UserControl1 : System.Windows.Forms.UserControl { ... }
On the Build menu, click Build Solution.
Тестирование Элемента управления Пользователем
Создайте проект Visual C#. Для этого выполните следующие действия:
- Запустите Visual Studio.
- В меню Файл выберите пункт Создать и затем пункт Проект.
- В разделе Типы проектов щелкните Visual C#, а затем выберите Windows Forms приложение в разделе Шаблоны. По умолчанию создается Form1.cs .
Добавьте элемент управления UserControl1 на панель элементов.
- В меню Сервис выберите пункт Выбрать элементы панели элементов.
- На вкладке компоненты платформа .NET Framework нажмите кнопку Обзор.
- В поле Открыть файл найдите библиотеку DLL, созданную при создании элемента управления UserControl.
Перетащите элемент UserControl1 из панели элементов (в Windows Forms) в Form1.cs.
Перетащите элемент управления Button с панели элементов в UserControl1.
Примечание.
UserControl1 ведет себя как контейнер элемента управления для элемента управления Button.
Ссылки
Дополнительные сведения см. на веб-сайте Майкрософт: Класс ParentControlDesigner.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по