사용자 인터페이스 형식 편집기 개요

업데이트: 2007년 11월

UI(사용자 인터페이스) 형식 편집기를 구현하여 복잡한 속성 형식에 대한 사용자 지정 디자인 타임 환경을 제공할 수 있습니다.

사용자 지정 형식 표시 및 편집

사용자 지정 형식을 속성으로 노출할 경우, PropertyGrid의 속성 값을 편집할 수 있는 방법은 다음 세 가지입니다.

  • 속성을 현재 위치에서 문자열로 편집할 수 있습니다. 이를 위해서는 사용자 지정 형식에 대한 TypeConverter가 필요합니다. 자세한 내용은 방법: 형식 변환기 구현을 참조하십시오.

  • 드롭다운 UI를 사용하여 속성을 편집할 수 있습니다. 이 방법은 한 번의 클릭으로 설정할 수 있는 속성의 경우에 특히 유용합니다.

  • 모달 대화 상자를 사용하여 속성을 편집할 수 있습니다. 속성이 매우 복잡한 경우 제대로 편집하려면 전체 대화 상자가 필요할 수도 있습니다.

한 번 클릭 또는 모달 대화 상자 편집을 사용하려면 UI 형식 편집기를 구현하여 PropertyGrid와 상호 작용해야 합니다.

드롭다운 편집기

드롭다운 편집기는 한 번 클릭으로 설정할 수 있는 형식에 적합합니다. 예를 들어, 드롭다운 편집기를 사용하여 PropertyGrid에서 Control 클래스의 DockBackColor 속성을 편집할 수 있습니다.

PropertyGrid에서 선택된 속성 엔트리 옆에 표시되는 화살표 단추(속성 Window 아래쪽 화살표)를 클릭하여 드롭다운 UI 형식 편집기에 액세스합니다. PropertyGrid에 연결된 사용자 지정 UI가 표시됩니다. 이 창의 맨 위가 속성 엔트리의 맨 아래에 배치되며, 창 너비는 속성 항목의 너비와 같습니다. 사용자가 선택을 하면 편집기 창도 닫혀야 합니다. 사용자 구현에서는 DropDownControl 메서드를 호출하여 디자인 환경에서 UI 형식 편집기 창의 위치와 크기를 지정해야 하고, CloseDropDown 메서드를 호출하여 창을 닫아야 합니다.

모달 대화 상자 편집기

모달 편집기는 완전한 대화형 UI가 필요한 형식에 유용합니다. 예를 들어, TabControl의 TabPage 컬렉션 편집기와 같은 컬렉션 편집기나 DataGridView 컨트롤의 열 편집 대화 상자가 모달 편집기입니다.

PropertyGrid에서 선택된 속성 엔트리 옆에 표시되는 줄임표 단추(VisualStudioEllipsesButton 스크린 샷)를 클릭하여 모달 UI 형식 편집기에 액세스합니다. 모달 대화 상자가 나타나며, 사용자는 일반 대화 상자처럼 상호 작용합니다. 사용자 구현에서는 ShowDialog 메서드를 호출하여 디자인 환경에서 대화 상자의 위치와 크기를 지정해야 합니다.

UI 형식 편집기 구현

사용자 지정 UI 형식 편집기를 구현하려면 최소한 다음 작업은 수행해야 합니다.

  • UITypeEditor에서 파생되는 클래스를 정의합니다.

  • GetEditStyle 메서드를 재정의하여 편집기에서 사용할 편집기 스타일 형식을 PropertyGrid에 알려 줍니다.

  • EditValue 메서드를 재정의하여 UI, 사용자 입력 처리 및 값 할당을 처리합니다.

다음 작업을 수행하여 PropertyGrid에서 값 표현을 그리기 위한 추가 지원을 추가할 수 있습니다.

  • GetPaintValueSupported를 재정의하여 편집기가 값 표현의 표시를 지원함을 나타냅니다.

  • PaintValue를 재정의하여 값 표현의 표시를 구현합니다.

  • 편집기에 초기화 동작을 포함시켜야 하는 경우 UITypeEditor 생성자 메서드를 재정의합니다.

참고:

UI 형식 편집기는 종종 System.Windows.Forms 네임스페이스의 형식을 사용하여 구현하지만 반드시 그럴 필요는 없습니다. .NET Framework의 표준 UI 형식 편집기는 UITypeEditor에서 파생됩니다.

UITypeEditor 클래스에서 파생

사용자 지정 UI 형식 편집기는 UITypeEditor 클래스에서 파생되어야 합니다. UI 형식 편집기에 특별한 초기화가 필요한 경우 기본 생성자를 정의합니다.

GetEditStyle 메서드 재정의

디자이너의 구성 요소나 컨트롤을 선택하는 경우 선택한 구성 요소나 컨트롤의 속성 값으로 속성 창이 다시 그려집니다. 속성을 선택하면 디자인 환경은 GetEditStyle 메서드를 쿼리하여 속성 엔트리를 나타내는 방법을 결정합니다.

재정의에서는 UITypeEditorEditStyle 열거형에서 값을 반환하여 UI 형식 편집기의 적절한 스타일을 전달합니다.

다음 표에서는 각 UITypeEditorEditStyle 값과 연결된 동작을 보여 줍니다.

멤버 이름

동작

None

대화형 UI 구성 요소를 제공하지 않습니다. 적절한 TypeConverter를 사용하여 문자열 엔트리를 속성 값으로 변환합니다.

DropDown

속성 엔트리에서 아래쪽 화살표 단추(속성 Window 아래쪽 화살표)를 표시합니다. UI는 드롭다운 창에 호스팅됩니다.

Modal

속성 엔트리에서 줄임표 단추(VisualStudioEllipsesButton 스크린 샷)를 표시합니다. UI는 모달 대화 상자입니다.

EditValue 메서드 재정의

EditValue 메서드는 UI를 표시하고 속성 값을 사용자가 선택한 값으로 설정합니다.

드롭다운 편집기

드롭다운 UI 형식 편집기의 경우, 서비스 공급자를 쿼리하여 IWindowsFormsEditorService 인터페이스를 찾습니다. 이 서비스는 UI의 위치와 크기 정보를 제공합니다. 일반적으로 UI는 Control로 구현됩니다. EditValue 구현에서는 이 컨트롤의 인스턴스를 만들어 현재 속성 값으로 초기화한 다음 DropDownControl 메서드로 전달하여 디자인 환경에서 실행합니다. 사용자가 새로운 속성 값을 선택한 경우 EditValue 구현은 CloseDropDown을 호출하여 UI를 닫습니다. EditValue 구현의 반환 값은 PropertyGrid에 표시되는 새 속성 값이 됩니다.

모달 편집기

모달 UI 형식 편집기의 경우, 서비스 공급자를 쿼리하여 IWindowsFormsEditorService 인터페이스를 찾습니다. 이 서비스는 대화 상자의 위치 정보를 제공합니다. 일반적으로 UI는 Form에서 파생된 클래스로 구현됩니다. EditValue 구현에서는 이 폼의 인스턴스를 만들어 현재 속성 값으로 초기화한 다음 ShowDialog 메서드로 전달해 디자인 환경에서 실행합니다. 이 호출의 반환 값이 OK인 경우 폼에서 새 속성 값을 검색하고 이를 반환 값으로 사용합니다. EditValue 구현의 반환 값은 PropertyGrid에 표시되는 새 속성 값이 됩니다.

ITypeDescriptorContext 매개 변수

EditValue 메서드는 ITypeDescriptorContext 매개 변수를 받으며, 이 매개 변수는 디자인 환경에 대한 컨텍스트 정보를 쿼리하는 데 사용할 수 있습니다. 이 매개 변수를 사용하여 다음 멤버에 액세스할 수 있습니다.

속성 값의 그래픽 표현 제공

PaintValue 메서드를 재정의하여 속성 값의 그래픽 표현을 나타낼 수 있습니다. 제공된 PaintValueEventArgs 매개 변수를 사용하여 PropertyGrid에서 속성 엔트리 왼쪽에 있는 작은 사각형에 그래픽 표현을 그릴 수 있습니다.

참고:

그래픽 표현은 PaintValueEventArgs 매개 변수의 Bounds 속성에서 정의한 범위 내에 두어야 합니다.

GetPaintValueSupported 메서드가 true를 반환하도록 재정의하여 UI 형식 편집기가 해당 값을 사용자 지정 표시로 그리는지 디자인 환경에 알려줍니다.

참고 항목

작업

방법: UI 형식 편집기 만들기

방법: 디자인 타임 기능을 활용하는 Windows Forms 컨트롤 만들기

참조

UITypeEditorEditStyle

IWindowsFormsEditorService

기타 리소스

사용자 인터페이스 형식 편집기