사용자 컨트롤, 사용자 지정 컨트롤 및 구성 요소의 차이점은 무엇입니까?


81

이것들은 당신이 프로젝트에 추가 할 수있는 세 가지 다른 것인데, 차이점을 이해하는지 잘 모르겠습니다. 예를 들어 .NET Framework로 작업 할 때 구성 요소 도구 상자에 모두 표시되는 것 같습니다 Form. 각각에 대한 몇 가지 일반적인 사용 시나리오는 무엇입니까? 차이점은 무엇입니까?

답변:


162

사용자 컨트롤, 사용자 지정 컨트롤 및 구성 요소의 주요 차이점은 상속 트리의 여러 수준에서 상속된다는 것입니다.

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

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

따라서 간단히 말해서 다양한 옵션을 사용하여 사전 배선 된 기능의 양이 다릅니다.

다른 옵션을 언제 사용 하시겠습니까? (이것들은 진실이 아니라 생각과 의견입니다)

  • UI없이 기능 을 제공하려는 경우 (예 : 타이머 구성 요소, 데이터 소스 등) 구성 요소를 만듭니다.
  • 시각적 모양을 완전히 제어 할 수있는 구성 요소를 만들고 불필요한 기능의 짐을 원하지 않는 경우 사용자 지정 컨트롤을 만듭니다 . 일반적인 경우는 기능이 제한된 간단한 컨트롤 (예 : 버튼)입니다.
  • 기존 컨트롤 을 재사용 가능한 구성 요소로 결합 하려는 경우 사용자 컨트롤을 만듭니다 (예 : 목록간에 항목을 이동할 수있는 단추가있는 두 개의 목록).

16
예, 알아내는 데 시간이 좀 걸렸지 만 UserControl실제로는 "복합"컨트롤 (다른 컨트롤로 만든 컨트롤) 인 반면 사용자 지정 컨트롤은 실제로 사용자가 디자인 한 컨트롤입니다.
Dave Cousineau

사용자 지정 및 동적으로 그린 ​​그래픽이있는 여러 TextBox로 구성된 컨트롤을 만들려면 선택해야 UserControl합니까?
Nick Alexeev 2014 년

@NickAlexeev 나는 몇 년 전부터 winforms 세계에서 많이 일하지 않았지만 그것이 갈 길이라고 믿습니다.
Fredrik Mörk 2014 년

2
@ FredrikMörk 좋은 대답! 사용자 지정 컨트롤을 만드는 방법을 배울 수있는 사이트를 제안 해 주시겠습니까?
John Odom

1
YouTube의 @John Odom AngelSix 시리즈는 함께 갈 것입니다. 내가 확인했고 비디오 9에 있다는 것을 알고 있으며 구체적으로 그는
26:00에

2

Fredrik이 말한 것에 덧붙여, 일반적으로 구성 요소와 사용자 지정 컨트롤은 프로젝트에서 재사용 할 계획 일 때 사용됩니다. 한 프로젝트에서만 사용할 때 사용자 컨트롤을 사용합니다.


10
왜 그렇습니까? 단일 프로젝트에서 사용자 정의 컨트롤을 사용하는 이점, 여러 프로젝트에서 사용되는 제한 ...?
Camilo Martin 2011

1

내 의견으로는 마지막 진술이 정확하지 않다고 생각합니다. 여러 가지 이유로 사용자 컨트롤을 만듭니다.

주된 이유는 내가 말하면 여러 컨트롤이 함께 그룹화 된 인터페이스를 디자인하기 때문입니다.

먼저 클래스 라이브러리를 만든 다음 여기에 사용자 컨트롤을 추가합니다. 이제 사용자 컨트롤이 작동하는 방식 뒤에있는 논리의 일부를 변경해야하는 경우 매우 쉽게 할 수 있습니다. 또한이 클래스 라이브러리는 여러 번 사용할 수 있습니다.

또한 동일한 고급 라이브러리 내에서 모든 사용자 컨트롤에 대해 공유 및 사용할 수있는 여러 클래스를 가질 수 있습니다.

이것이 내가 사용자 컨트롤을 사용하는 주된 이유입니다. 그리고 사용자 컨트롤 또는 클래스 라이브러리를 변경하는 경우. 일단 당신이 직업을 구축하면. dll은 bin 폴더에서 동적으로 업데이트됩니다.

그래서 내가 이것을 다른 프로젝트에서 참조한다면 이러한 변경 사항은 새 프로젝트에도 나타납니다.

또한 양식 및 양식에로드 한 항목과 동일한 페인트 루틴을 사용하지 않습니다.

따라서 사용자 컨트롤은 우리에게 매우 모듈화 될 수있는 능력을 제공합니다. 그리고 클래스 라이브러리의 기본 클래스를 공유하는 여러 사용자 컨트롤을 가질 수 있습니다. 따라서 사용자 컨트롤 목적은 하나의 프로젝트를위한 것이 아닙니다. 그 점에는 제한이 없습니다. 제프


Re "마지막 진술이 내 의견으로는 정확하지 않다고 생각합니다" -마지막 진술은 무엇 입니까? [그리고 그것은 독자가 즉시 언급하는 것을 알 수 있도록, 당신의 대답에 문을 인용하는 가장 좋은 것입니다.]
ToolmakerSteve

-5

사용자 정의 컨트롤 의 주요 차이점은 확장명이 .ascx 인 페이지 파일로 단일 애플리케이션 또는 프로젝트 내에서만 사용할 수 있지만 사용자 정의 컨트롤은 여러 애플리케이션에서 사용할 수있는 어셈블리 (dll 파일)입니다.


7
질문은 ASP.NET이 아니라 WinForms에 관한 것이 었습니다.
Qwertie 2014 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.