72

이것들은 프로젝트에 추가 할 수있는 세 가지이며, 차이점을 이해할 수 있을지 잘 모르겠습니다. 예를 들어 모두 함께 작업 할 때 구성 요소 도구 상자에 나타나는 것처럼 보입니다.Form. 각각의 일반적인 사용 시나리오는 무엇입니까? 그 차이점은 무엇입니까?

5 답변


140

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

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

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

따라서 간단히 말해 다양한 옵션으로 사전 배선 된 기능의 양이 달라집니다.

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

  • 만들기구성 요소당신이 제공하고자한다면UI없는 기능(예 : 타이머 구성 요소, 데이터 소스 등)
  • 만들기사용자 지정 컨트롤당신이 가득한 곳에 컴포넌트를 만들고 싶다면시각적 외관 제어, 그리고 당신은 불필요한 기능의 수하물을 원하지 않습니다. 전형적인 경우는 제한된 기능을 가진 간단한 컨트롤 (버튼과 같은)
  • 만들기사용자 제어네가 가면기존 컨트롤 결합재사용 가능한 빌딩 블록 (예 : 목록간에 항목을 이동할 수있는 버튼이있는 두 개의 목록).


  • 그래, 알아 내는데 시간이 좀 걸렸지 만UserControl은 실제로 "합성물"이다. 컨트롤 (다른 컨트롤로 만들어진 컨트롤) 인 반면 사용자 지정 컨트롤은 실제로 사용자가 디자인 한 컨트롤입니다. - Dave Cousineau
  • 그 사이에 사용자 정의 및 동적으로 그려진 그래픽이있는 여러 TextBox로 구성된 컨트롤을 만들려면UserControl? - Nick Alexeev
  • @NickAlexeev 필자는 몇 년 전부터 winforms 세계에서 많은 일을 해오지 못했다.하지만 나는 그 길을 갈 것으로 믿는다. - Fredrik Mörk
  • @ FredrikM & rk Nice Answer! 사용자 지정 컨트롤을 만드는 방법을 배울 수있는 사이트를 제안 할 수 있습니까? - John Odom

4

이것은 CustomControl과 UserControl 사이의 차이점입니다.

사용자 정의 컨트롤

느슨하게 결합 된 제어 코드 및 UI

컨트롤에서 파생됩니다.

ResourceDictionary에서 UI를 정의합니다.

UI가 스킨 가능

동적 레이아웃 있음

다른 프로젝트에서 UI를 변경할 수 있습니다.

완벽한 도구 상자 지원

단일 컨트롤을 정의합니다.

보다 융통성있는

==============

사용자 컨트롤

밀접하게 결합 된 컨트롤 코드 및 UI

UserControl에서 파생됩니다.

UI를 일반 XAML로 정의합니다.

하위 컨트롤은 스킨 가능

정적 레이아웃 있음

UI가 고정되어 있으며 다른 프로젝트에서 다른 모양을 가질 수 없습니다.

도구 상자에 추가 할 수 없습니다.

컨트롤 세트를 정의합니다.

사용자 지정 컨트롤처럼 유연하지 않습니다.


  • 동의하지 않는 이유는 무엇입니까?Can't be added to the toolbox - Jagoda Sokół
  • 최소한 당신이 대답을 가져온 인공물에 연결하십시오.codeproject.com/Articles/179442/… - user3265613
  • 이 대답은 Silverlight에 대한 기사에서 복사되었습니다. 저작권 위반 일뿐 만 아니라이 질문의 맥락에서 내용 중 일부가 잘못되었습니다 (Silverlight가 아닌 WinForms). - Sebastian Negraszus

2

프레드릭이 말한 것에 덧붙여, 일반적으로 구성 요소와 사용자 정의 컨트롤은 프로젝트 전체에서 재사용을 계획 할 때 사용됩니다. 하나의 프로젝트에서만 사용자 컨트롤을 사용할 때 사용하십시오.


  • 왜 그렇게? 단일 프로젝트에서 사용자 정의 컨트롤을 사용할 때의 이점, 여러 프로젝트에서 사용할 수있는 제한 사항 ...? - Camilo Martin

0

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

주된 이유는 말하자면 여러 컨트롤의 인터페이스를 디자인하는 경우입니다. 함께 그룹화.

먼저 클래스 라이브러리를 만든 다음 사용자 정의 컨트롤을 추가합니다. 이제 사용자 컨트롤이 어떻게 작동하는지 배후에서 로직의 일부를 변경해야 할 경우 매우 쉽게 할 수 있습니다. 또한이 클래스 라이브러리는 여러 번 사용할 수 있습니다.

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

이것이 내가 사용자 컨트롤을 사용하는 주된 이유입니다. 그리고 사용자 정의 컨트롤이나 클래스 라이브러리를 변경하면됩니다. 일단 직장을 만들면 dll은 bin 디렉토리에서 동적으로 날짜를 표시합니다.

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

또한 폼과 폼에로드 한 것과 동일한 페인트 루틴을 사용하지 않습니다.

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


-3

그들 사이의 주요 차이점은 -사용자 정의 컨트롤은 확장자가 .ascx 인 페이지 파일로, 단일 응용 프로그램 또는 프로젝트 내에서 사용되지만 사용자 지정 컨트롤은 여러 응용 프로그램에서 사용할 수있는 어셈블리 (dll 파일)입니다.


  • 질문은 ASP.NET이 아니라 WinForms에 관한 것이 었습니다. - Qwertie

연결된 질문


최근 질문