다음을 통해 공유


디자인 타임 아키텍처

업데이트: 2007년 11월

다음 예제에서는 .NET Framework의 디자인 타임 아키텍처에 대한 개요를 제공합니다.

디자인 타임 아키텍처

.NET Framework에서는 디자인 타임 환경에서 구성 요소 동작과 사용자 인터페이스를 사용자 정의하는 데 필요한 인터페이스 및 클래스를 제공합니다. 디자인 타임 환경에는 보통 구성 요소 정렬을 위한 폼 디자이너와 구성 요소 속성의 값 구성을 위한 속성 브라우저가 포함되어 있습니다. 또한 디자인 타임 환경에서는 일반적으로 디자인 타임 메커니즘이 액세스 및 사용할 수 있는 디자인 타임 서비스도 제공합니다.

.NET Framework에서는 개발자가 사용자 정의 디자인 타임 지원을 구현하는 데 사용할 수 있는 인터페이스를 정의합니다. 디자인 타임 지원을 확장하는 기본 메커니즘은 디자이너, 형식 변환기 및 UI 형식 편집기 범주에 해당합니다. 형식 및 형식 멤버에 특성이 적용되어 이런 디자인 타임 지원 공급자에 연결됩니다.

특성

특성은 형식이나 형식 멤버를 디자인 타임 동작을 확장하는 클래스에 연결하는 역할을 합니다. DesignerAttribute는 형식을 디자이너에 연결합니다. TypeConverterAttribute는 형식이나 형식 멤버를 형식 변환기에 연결합니다. EditorAttribute는 형식이나 형식 멤버를 UI 형식 편집기에 연결합니다. .NET Framework의 특성에 대한 자세한 내용은 구성 요소의 디자인 타임 특성특성 및 디자인 타임 지원을 참조하십시오.

디자이너

디자이너를 사용하면 디자인 타임에 모양, 초기화 및 다른 사용자와의 상호 운용을 포함한 구성 요소의 여러 동작을 사용자 정의할 수 있습니다. 즉, 선택한 구성 요소의 속성 브라우저에 나열된 속성을 추가, 제거 또는 바꿀 수 있습니다. 디자이너에서는 특정 구성 요소 이벤트에 연결되거나 사용자 정의 메뉴 명령 또는 DesignerVerb에서 실행할 수 있는 사용자 정의 메서드를 제공할 수 있습니다. 뿐만 아니라 디자인 타임 환경에서 제공하는 서비스도 사용할 수 있습니다. 디자이너에 대한 자세한 내용은 사용자 지정 디자이너를 참조하십시오.

형식 변환기

지원을 위해 빌드된 대상 형식과, 값을 변환할 수 있는 다른 데이터 형식 사이에 값을 변환하기 위해 형식 변환기를 구현할 수 있습니다. 또한 형식 변환기에서는 디자인 타임에 속성 브라우저에서 속성을 구성할 수 있도록 지원하는 논리를 제공할 수 있습니다. 아울러 디자인 타임에 속성 브라우저에서 지원되는 형식의 속성에 대한 표준 값 목록도 제공할 수 있습니다. 형식 변환기는 초기화 코드를 생성하여 디자인 타임에 속성을 초기화할 수도 있습니다. 형식 변환기 구현에 대한 자세한 내용은 방법: 형식 변환기 구현을 참조하십시오.

UI 형식 편집기

UI 형식 편집기에서는 디자인 타임에 속성 값을 편집하고 속성 값의 표현을 표시하기 위한 사용자 정의 UI(사용자 인터페이스)를 제공할 수 있습니다. UI 형식 편집기는 형식에 따라 다르며 지원을 위해 빌드된 대상 형식 또는 디자인 타임에 특성을 재정의하지 않는 파생된 형식의 속성을 구성하기 위한 사용자 인터페이스를 제공합니다. UI 형식 편집기에서는 속성 구성을 위한 Windows Form이나 드롭 다운 구성 인터페이스를 표시할 수 있습니다. UI 형식 편집기 구현에 대한 자세한 내용은 방법: UI 형식 편집기 구현을 참조하십시오.

참고:

형식 변환기 및 UI 형식 편집기는 디자인 타임과 런타임에 모두 사용되지만, 디자이너는 디자인 타임에만 사용됩니다.

디자인 관련 형식

다음 표에서는 디자인 관련 네임스페이스의 일부 중요한 클래스를 보여 줍니다.

System.Drawing.Design

형식

설명

UITypeEditor

값 편집기를 구현하는 데 사용될 수 있는 기본 클래스를 제공합니다.

IToolboxService

개발 환경에서 도구 상자를 관리하고 쿼리하는 메서드와 속성을 제공합니다.

ToolboxItem

도구 상자 항목의 기본 구현을 제공합니다.

System.ComponentModel.Design

형식

설명

DesignerActionList

스마트 태그 패널을 만드는 데 사용되는 항목의 목록을 정의하는 형식에 대한 기본 클래스를 제공합니다.

DesignSurface

구성 요소를 디자인하기 위한 사용자 인터페이스를 제공합니다.

IDesigner

사용자 지정 디자이너를 빌드하기 위한 기본 프레임워크를 제공합니다.

IRootDesigner

루트 수준 디자이너 뷰 기술을 지원합니다.

IExtenderProviderService

디자인 타임에 Extender 공급자를 추가하거나 제거하기 위한 인터페이스를 제공합니다.

UndoEngine

일반 실행 취소/다시 실행 기능을 지정합니다.

System.Windows.Forms.Design

형식

설명

IWindowsFormsEditorService

디자인 모드에서 PropertyGrid 컨트롤의 드롭다운 영역에 컨트롤을 표시하거나 Windows Forms을 표시하기 위한 UI 형식 편집기의 인터페이스를 제공합니다.

ControlDesigner

Control의 디자인 모드 동작을 확장하기 위한 기본 디자이너 클래스입니다.

DocumentDesigner

중첩된 컨트롤을 지원하고 스크롤 메시지를 수신하는 Control의 디자인 모드 동작을 확장하고 루트 수준 디자인 모드 뷰를 제공하기 위한 기본 디자이너 클래스입니다.

System.Windows.Forms.Design.Behavior

형식

설명

BehaviorService

디자이너의 사용자 인터페이스를 관리합니다.

Behavior

BehaviorService에서 관리되는 Behavior 개체를 나타냅니다.

Adorner

사용자 인터페이스 관련 Glyph 개체의 컬렉션을 관리합니다. 이 클래스는 상속될 수 없습니다.

Glyph

Adorner에서 관리되는 단일 UI(사용자 인터페이스) 엔터티를 나타냅니다.

디자인 타임 서비스

.NET Framework에서는 디자이너의 기능를 확장할 수 있는 디자인 타임 서비스 집합을 제공합니다. 이러한 서비스는 디자인 모드에서 설치되는 구성 요소의 GetService 메서드를 사용하여 얻을 수 있습니다. IDesignerHost 서비스 인터페이스의 AddService 메서드를 사용하여 디자인 모드 프로젝트 내에서 액세스할 수 있는 사용자 정의 서비스 형식을 추가할 수 있습니다.

IComponentChangeService 인터페이스를 통해 디자이너는 디자인 타임 환경의 구성 요소가 변경, 추가 또는 제거될 때 알림을 받을 수 있습니다.

IDesignerEventService 인터페이스를 통해 디자이너는 디자인 타임 환경의 디자이너가 추가 또는 제거될 때와 현재 구성 요소 선택이 변경될 때 알림을 받을 수 있습니다.

IDesignerFilter 인터페이스를 통해 디자이너는 속성 브라우저에 표시되는 구성 요소에 대한 속성 집합을 추가 및 필터링할 수 있습니다.

IDesignerHost 인터페이스를 사용하면 서비스를 추가 및 검색하고 디자이너 상태에 관련된 이벤트를 처리하며 현재 디자이너가 로드되어 있는지 여부를 확인하고 구성 요소나 디자이너 트랜잭션을 관리할 수 있습니다. 디자이너 트랜잭션을 사용하면 작업 시퀀스가 완료될 때까지 디자인 타임 뷰의 표시 새로 고침을 금지하는 모드에서 작업 시퀀스가 수행되도록 하여 성능을 향상시킬 수 있습니다. 동시에 트랜잭션의 구성 요소 작업을 취소하고 이전 상태를 복원하는 메커니즘도 지원합니다.

IDesignerOptionService 인터페이스를 통해 디자이너는 Visual Studio .NET 환경의 도구 메뉴에 있는옵션에서 액세스할 수 있는 Windows Forms 디자이너 속성 표에 나열된 속성 값을 얻고 설정할 수 있습니다. DesignerOptionService 클래스는 옵션 쿼리의 융통성을 확장합니다.

IDictionaryService 인터페이스를 통해 디자이너는 사용자 정의 데이터에 대한 키 기반 컬렉션과 키 또는 값으로 액세스할 수 있는 키 쌍을 사용할 수 있습니다.

IEventBindingService 인터페이스를 통해 디자이너는 구성 요소가 선택되어 있는 동안 디자인 타임에 속성 브라우저의 구성 요소에 대한 이벤트를 노출할 수 있습니다.

IExtenderListService 인터페이스를 통해 디자이너는 디자인 타임 환경의 현재 활성 Extender 공급자를 얻을 수 있습니다. IExtenderProviderService 인터페이스를 통해 디자이너는 디자인 타임에 Extender 공급자를 추가하거나 제거할 수 있습니다.

IHelpService 인터페이스를 통해 디자이너는 도움말 서비스 컨텍스트와 도움말 컨텍스트 특성을 만들거나 제거하고 도움말 항목을 키워드나 URL별로 표시할 수 있습니다.

IInheritanceService 인터페이스를 통해 디자이너는 파생된 클래스의 구성 요소를 검색하고 각각에 대한 상속 특성을 식별할 수 있습니다.

IMenuCommandService 인터페이스를 통해 디자이너는 디자인 타임 환경의 메뉴 명령을 검색, 추가, 제거 또는 호출할 수 있습니다.

IReferenceService 인터페이스를 통해 디자이너는 참조, 이름별 개체에 대한 참조, 지정된 구성 요소의 부모에 대한 참조 또는 현재 디자인 모드 프로젝트에서 지정된 형식의 개체에 대한 참조로 개체 이름을 얻을 수 있습니다.

IResourceService 인터페이스를 통해 디자이너는 지정된 CultureInfo에 대한 리소스 판독기나 작성기를 얻을 수 있습니다.

IRootDesigner 인터페이스를 통해 디자이너는 루트 디자이너 뷰를 사용자 지정 디자이너 뷰 디스플레이로 바꿀 수 있습니다. IRootDesigner 인터페이스는 구성 요소의 디자이너에서 구현해야 합니다.

ISelectionService 인터페이스를 통해 디자이너는 현재 선택된 구성 요소에 대한 참조 집합을 얻고 구성 요소나 구성 요소 집합에 선택 내용을 설정하며 선택된 구성 요소가 있는지 여부를 확인할 수 있습니다.

IServiceContainer 인터페이스를 통해 디자이너는 다른 구성 요소 또는 디자이너에서 사용될 수 있는 서비스를 추가하거나 제거할 수 있습니다.

ITypeDescriptorFilterService 인터페이스를 통해 구성 요소 또는 디자이너는 디자인 타임에 구성 요소에 의해 노출된 특성, 이벤트 및 속성을 필터링할 수 있습니다. ITypeDescriptorFilterService 인터페이스는 디자인 모드에서 설치되는 구성 요소의 AddService 메서드를 Site를 사용하여 서비스로 추가할 수 있는 클래스에 의해 구현되어야 합니다.

ITypeResolutionService 인터페이스를 통해 디자이너는 어셈블리에 대한 참조를 프로젝트에 추가하고 이름별로 형식이나 어셈블리를 얻고 지정된 어셈블리의 경로를 얻을 수 있습니다.

DesignerActionServiceDesignerActionUIService 클래스는 사용자 지정 디자이너의 스마트 태그 기능을 구현합니다. 자세한 내용은 Windows Forms용 디자이너 명령 및 DesignerAction 개체 모델을 참조하십시오.

BehaviorService는 디자이너의 사용자 인터페이스를 관리합니다. 디자인 타임에 마우스 관련 이벤트, 메뉴 명령 및 OLE 끌어서 놓기 작업과 같은 사용자 인터페이스 요소를 조작하는 일관된 방식을 제공합니다. 자세한 내용은 동작 서비스 개요를 참조하십시오.

CodeDomComponentSerializationService 구성 요소 또는 serialize 가능한 개체의 집합을 serialization 저장소에 serialize합니다. 자세한 내용은 디자이너 serialization 개요를 참조하십시오.

참고 항목

작업

방법: 형식 변환기 구현

방법: UI 형식 편집기 구현

방법: 디자인 타임 서비스 액세스

방법: Windows Forms에서 디자인 타임 지원 액세스

개념

특성 및 디자인 타임 지원

Windows Forms용 디자이너 명령 및 DesignerAction 개체 모델

동작 서비스 개요

디자이너 serialization 개요

기타 리소스

디자인 타임 지원 확장

사용자 지정 디자이너