Это три разные вещи, которые вы можете добавить в проект, и я не совсем уверен, понимаю ли я эту разницу. Кажется, что все они отображаются, например, в панели инструментов компонента при работе с Form
. Каковы некоторые общие сценарии использования для каждого из них? В чем разница?
В чем разница между User Control, Custom Control и Component?
Ответ 1
Основное различие между User Control, Custom Control и Component заключается в том, что они наследуют разные уровни в дереве наследования:
MyComponent
|-> Component
MyCustomControl
|-> Control
|-> Component
MyUserControl
|-> ContainerControl
|-> ScrollableControl
|-> Control
|-> Component
Итак, короче, вы получаете различное количество предварительно подключенных функций с различными параметрами.
Когда вы будете использовать разные варианты? (это мысли и мнения, а не истины)
- Создайте компонент, если вы хотите предоставить функциональность без интерфейса пользователя (например, компоненты таймера, источники данных,...)
- Создайте настраиваемый элемент управления, если вы хотите создать компонент, в котором у вас есть полный контроль над его визуальным внешним видом, и вам не нужен какой-либо багаж ненужных функций. Типичными случаями были бы простые элементы управления с ограниченной функциональностью (например, кнопка).
- Создайте пользовательский элемент управления, если вы собираетесь объединить существующие элементы управления в многократные строительные блоки (например, два списка с кнопками, в которых вы можете перемещать элементы между списками).
Ответ 2
Это некоторая разница между CustomControl и UserControl:
Пользовательское управление
Свободно связанный код управления w.r.t и пользовательский интерфейс
Производит управление
Определяет пользовательский интерфейс в ResourceDictionary
Пользовательский интерфейс доступен для скинов
Имеет динамический макет
Пользовательский интерфейс может быть изменен в разных проектах
Имеет полную поддержку панели инструментов
Определяет один элемент управления
Более гибкий
==============
Контроль пользователя
Плотно связанный код управления w.r.t и UI
Вывод из UserControl
Определяет пользовательский интерфейс как обычный XAML
Элементы управления для детей можно использовать для скинов
Имеет статический макет
Пользовательский интерфейс фиксирован и не может иметь разные взгляды в разных проектах
Невозможно добавить в панель инструментов
Определяет набор элементов управления
Не очень гибкая, как пользовательский контроль
Ответ 3
Добавляя к тому, что сказал Фредрик, обычно компоненты и пользовательские элементы управления будут использоваться, когда вы планируете повторно использовать их в проектах. Используйте пользовательские элементы управления, когда вы будете использовать его только в одном проекте.
Ответ 4
Я считаю, что последнее утверждение неверно, на мой взгляд. Я создаю пользовательские элементы управления по разным причинам.
Основная причина заключается в том, что если, например, я проектирую интерфейс нескольких элементов управления сгруппированы вместе.
Сначала создаю библиотеку классов, затем добавляю к нему пользовательские элементы управления. Теперь, если мне нужно изменить какую-либо часть логики, по которой работает пользовательский контроль, я могу очень легко. Также эту библиотеку классов можно использовать несколько раз.
Кроме того, в одной и той же библиотеке классов я могу иметь несколько классов, которые могут использоваться совместно и использоваться для любого из моих пользовательских элементов управления.
Это основная причина, по которой я использую пользовательские элементы управления. И если вы внесете изменения в свой пользовательский элемент управления или библиотеку классов. как только вы создадите работу. dll будет динамически обновлять дату в папке bin.
Итак, если я ссылаюсь на это в другом проекте Эти изменения также появятся в новом проекте.
Также он не использует те же рутинные процедуры, что и форма, и все, что вы загрузили в форму.
Таким образом, пользовательские элементы управления дают нам возможность быть очень модульными И я могу иметь несколько пользовательских элементов управления, которые разделяют основные классы библиотеки классов... Таким образом, цель управления пользователями заключается не только в одном проекте. В этом отношении нет никаких ограничений. Джеф
Ответ 5
Основное различие между ними - User Control - это файл с расширением .ascx, который может быть только используемые в рамках одного приложения или проекта. Но настраиваемые элементы управления - это сборки (файлы DLL), которые могут использоваться в нескольких приложениях.