В чем разница между User Control, Custom Control и Component?

Это три разные вещи, которые вы можете добавить в проект, и я не совсем уверен, понимаю ли я эту разницу. Кажется, что все они отображаются, например, в панели инструментов компонента при работе с Form. Каковы некоторые общие сценарии использования для каждого из них? В чем разница?

Ответ 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), которые могут использоваться в нескольких приложениях.