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


82

Це три різні речі, які ви можете додати до проекту, і я не зовсім впевнений, що розумію різницю. Здається, всі вони, наприклад, відображаються в наборі інструментів компонентів при роботі з a Form. Які загальні сценарії використання для кожного з них? Яка різниця?

Відповіді:


163

Основна відмінність між User Control, Custom Control і Component полягає в тому, що вони успадковуються з різних рівнів у дереві успадкування:

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

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

Отже, коротше, ви отримуєте різну кількість попередньо підключених функцій з різними опціями.

Коли б ви використовували різні варіанти? (це думки та думки, а не істини)

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

16
Так, мені знадобився деякий час, щоб це зрозуміти, але, схоже, UserControlце справді "складений" елемент керування (елемент керування, виготовлений з інших елементів керування), тоді як спеціальний елемент управління - це справді елемент управління, розроблений користувачем.
Dave Cousineau

Якщо ви хочете створити елемент керування, що складається з декількох текстових коробок із графіками, що складаються з індивідуальних та динамічних зображень, чи слід вибрати UserControl?
Нік Алексєєв

@NickAlexeev Я не так багато працював у світі війнформ за кілька років тому, але я вважаю, що це був би шлях, так.
Фредрік Морк,

2
@ FredrikMörk Приємна відповідь! чи можете ви запропонувати веб-сайт, де ми могли б навчитися створювати власні елементи керування?
Джон Одом,

1
Серія @John Odom AngelSix на YouTube - це той, з ким слід піти. Я перевірив, і знаю, що це на відео 9, а конкретніше він використав його о 26:00
Mour_Ka

2

Додаючи до сказаного Фредріком, як правило, компоненти та спеціальні елементи керування будуть використовуватися, коли ви плануєте повторно використовувати їх у проектах. Використовуйте елементи керування користувача, коли ви використовуєте їх лише в одному проекті.


10
Чому так? Перевага використання елемента керування користувача в одному проекті, обмеження його використання у кількох проектах ...?
Каміло Мартін

1

Я вважаю, що останнє твердження є неправильним, на мій погляд. Я створюю елементи керування користувача з багатьох різних причин.

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

Спочатку я створюю бібліотеку класів, а потім додаю до неї елементи керування користувача. Тепер, якщо мені потрібно змінити будь-яку частину логіки, за якою працює користувальницький контроль, я можу це зробити дуже легко. Також цю бібліотеку класів можна використовувати кілька разів.

Крім того, в одній і тій же стильній бібліотеці я можу мати кілька класів, якими можна ділитися та використовувати їх для будь-якого з моїх елементів керування.

Це основна причина, через яку я використовую елементи керування користувача. І якщо ви внесете зміни до свого елемента керування користувача або бібліотеки класів. як тільки ви побудуєте роботу. dll буде динамічно оновлювати дату в папці bin.

Отже, якщо я посилаюся на це в іншому проекті, ці зміни також з’являться в новому проекті.

Крім того, він не використовує ті самі процедури фарби, що і форма, і все, що ви завантажили у форму.

Отже, елементи керування користувачем дають нам можливість бути дуже модульними І я можу мати декілька елементів керування користувачами, які поділяють основні класи бібліотеки класів ... Отже, ціль управління користувачем просто не для одного проекту. Він не має обмежень у цьому відношенні. Джефф


Re: "Я вважаю, що останнє твердження не є правильним, на мій погляд" - останнє твердження чого ? [І було б краще процитувати заяву в своїй відповіді, так що читачі відразу ж знаю , що ви маєте на увазі.]
ToolmakerSteve

-5

Основна різниця між ними - User Control - це файл сторінки з розширенням .ascx, який можна використовувати лише в межах однієї програми або проекту. Але спеціальні елементи керування - це збірки (DLL-файли), які можна використовувати в декількох додатках.


7
Питання було про WinForms, а не про ASP.NET.
Кверті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.