В чем разница между пользовательским элементом управления, пользовательским элементом управления и компонентом?


82

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

Ответы:


163

Основное различие между пользовательским элементом управления, настраиваемым элементом управления и компонентом заключается в том, что они наследуются от разных уровней в дереве наследования:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

Короче говоря, вы получаете разный объем предварительно подключенных функций с различными опциями.

Когда бы вы использовали разные варианты? (это мысли и мнения, а не истина)

  • Создайте компонент, если вы хотите предоставить функциональность без пользовательского интерфейса (например, компоненты таймера, источники данных, ...)
  • Создайте настраиваемый элемент управления, если вы хотите создать компонент, в котором у вас есть полный контроль над его внешним видом , и вам не нужен багаж ненужных функций. Типичными случаями являются простые элементы управления с ограниченной функциональностью (например, кнопка).
  • Создайте пользовательский элемент управления, если вы собираетесь объединить существующие элементы управления в повторно используемые строительные блоки (например, два списка с кнопками, с помощью которых вы можете перемещать элементы между списками).

16
Да, мне потребовалось время, чтобы понять, но кажется, что UserControlэто действительно «составной» элемент управления (элемент управления, созданный из других элементов управления), тогда как пользовательский элемент управления на самом деле является элементом управления, разработанным пользователем.
Дэйв Кузино,

Если я хочу создать элемент управления, состоящий из нескольких текстовых полей с настраиваемой и динамически отображаемой графикой между ними, следует ли мне выбирать UserControl?
Ник Алексеев

@NickAlexeev Я мало работал в мире winforms несколько лет назад, но я верю, что так и будет, да.
Fredrik Mörk

2
@ FredrikMörk Хороший ответ! Не могли бы вы предложить сайт, на котором мы могли бы научиться создавать собственные элементы управления?
Джон Одом

1
@John Odom AngelSix на YouTube - это то, что вам нужно. Я проверил и знаю, что это есть в видео 9, и, если быть точным, он использовал его в 26:00
Mour_Ka

2

В дополнение к тому, что сказал Фредрик, обычно компоненты и настраиваемые элементы управления будут использоваться, когда вы планируете повторно использовать их в проектах. Используйте пользовательские элементы управления, если вы собираетесь использовать их только в одном проекте.


10
Почему так? Преимущество использования пользовательского элемента управления в одном проекте, ограничение его использования в нескольких проектах ...?
Камило Мартин

1

Я считаю, что последнее утверждение неверно, на мой взгляд. Я создаю пользовательские элементы управления по разным причинам.

Основная причина в том, что если я, скажем, разрабатываю интерфейс из нескольких элементов управления, сгруппированных вместе.

Сначала я создаю библиотеку классов, а затем добавляю в нее пользовательские элементы управления. Теперь, если мне нужно изменить какую-либо часть логики работы пользовательского элемента управления, я могу очень легко. Также эту библиотеку классов можно использовать несколько раз.

Также в одной и той же классной библиотеке у меня может быть несколько классов, которые можно использовать совместно с любым из моих пользовательских элементов управления.

Это основная причина, по которой я использую пользовательские элементы управления. И если вы внесете изменения в свой пользовательский элемент управления или библиотеку классов. как только вы построите работу. dll будет динамически обновляться в папке bin.

Поэтому, если я ссылаюсь на это в другом проекте, эти изменения также появятся в новом проекте.

Кроме того, он не использует те же процедуры рисования, что и форма, и все, что вы загрузили в форму.

Таким образом, пользовательские элементы управления дают нам возможность быть очень модульными. И я могу иметь несколько пользовательских элементов управления, которые совместно используют базовые классы библиотеки классов ... Таким образом, цель пользовательского элемента управления - это просто не для одного проекта. В этом отношении ограничений нет. Джефф


Re "Я считаю, что последнее утверждение, на мой взгляд, неверно" - последнее утверждение чего ? [И было бы лучше процитировать заявление в своем ответе, так что читатели сразу же знаю , что вы имеете в виду.]
ToolmakerSteve

-5

Основное различие между ними. Пользовательский элемент управления - это файл подкачки с расширением .ascx, который можно использовать только в одном приложении или проекте. Но пользовательские элементы управления - это сборки (файлы dll), которые можно использовать в нескольких приложениях.


7
Вопрос касался WinForms, а не ASP.NET.
Qwertie
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.