사용자 지정 컨트롤 개발
업데이트: 2007년 11월
.NET Compact Framework에는 대부분의 장치 프로젝트 요구 사항을 충족시킬 수 있는 Windows Forms 컨트롤이 제공되며, 이러한 컨트롤은 제한된 리소스를 효율적으로 사용하도록 되어 있기 때문에 상속된 속성, 메서드 및 이벤트 중 일부만 지원합니다. 기본적으로 제공되지 않는 기능을 사용하려면 공용 컨트롤에서 사용자 지정 컨트롤을 파생시켜야 합니다. 사용자 지정 컨트롤은 Control 클래스 또는 어셈블리의 기존 UserControl에서 상속된 공용 형식을 정의하여 만들 수 있습니다.
공용 컨트롤의 메서드를 재정의하면 컨트롤을 가장 손쉽게 사용자 지정할 수 있습니다. 예를 들어, TextBox 컨트롤의 상속된 OnKeyPress 메서드를 재정의하여 숫자 값만 입력하도록 제한하는 코드를 제공할 수 있습니다.
참고: |
---|
.NET Compact Framework에서는 기본 컨트롤에서 상속되는 속성, 메서드 및 이벤트 중 일부만 Windows Forms 컨트롤에 사용할 수 있습니다. |
다음과 같은 목적으로 공용 컨트롤에서 파생시킬 수 있습니다.
공용 컨트롤에 사용자 지정 속성, 메서드 및 이벤트 재정의
컨트롤에 추가 속성, 메서드 및 이벤트 정의
사용자 동작에 대해 컨트롤이 응답하는 방법 정의(예: 숫자 데이터만 허용하는 TextBox)
현재 .NET Compact Framework에서는 디자인 타임에 액세스할 수 있는 사용자 지정 컨트롤은 추가할 수 없습니다.
보다 정밀하게 사용자 지정하려는 경우 Control 클래스에서 파생되는 사용자 지정 컨트롤을 만들어야 합니다. OnPaint 메서드를 재정의하여 컨트롤을 그릴 수 있으며 사용자 지정 이벤트로 요구에 맞게 UI 컨트롤이 아닌 컨트롤을 만들 수 있습니다.
기본 Control 클래스에는 파생 컨트롤을 만드는 방법에 대한 정보가 없으며 OnPaint 메서드에 아무런 그리기 논리도 제공되지 않습니다. Control의 OnPaint 메서드는 등록된 이벤트 수신자에게 Paint 이벤트를 디스패치하기만 합니다.
.NET Compact Framework는 Form 및 Control 클래스에 대한 Paint 및 Resize 이벤트만 발생시킵니다.
도구 상자에 사용자 지정 컨트롤 추가
Microsoft Visual Studio 2005에서 사용자 지정 컨트롤에 대한 프로젝트를 만드는 경우 응용 프로그램이 컴파일되면 컨트롤이 도구 상자에 자동으로 추가됩니다. 다음 프로젝트 형식 중 하나를 사용하여 사용자 지정 컨트롤을 만들 수 있습니다.
컨트롤 라이브러리
클래스 라이브러리
클래스 라이브러리(1.0)
사용자 지정 컨트롤을 도구 상자에 추가하려면 도구 메뉴에서 도구 상자 항목 선택을 클릭합니다. 그런 다음 컨트롤의 어셈블리를 찾을 수 있습니다.
사용자 지정 컨트롤 기술 및 고려 사항
사용자 지정 컨트롤을 만들 경우 다음 사항에 주의합니다.
.NET Compact Framework는 전체 NET Framework에서 일부 컨트롤을 사용할 수 있으므로 부모 컨트롤에서 값 상속 기능을 지원하지 않습니다. 이 문제를 해결하려면 OnParentChanged 메서드를 사용하여 부모가 변경된 시기를 확인하고 적절한 작업을 수행합니다. 다음 코드 예제에서는 부모가 변경될 때 배경색이 변경되는 방법을 보여 줍니다.
protected override void OnParentChanged(EventArgs e) { base.OnParentChanged(e); this.BackColor = Parent.BackColor; }
Protected Overrides Sub OnParentChanged(ByVal e As EventArgs) MyBase.OnParentChanged(e) Me.BackColor = Parent.BackColor End Sub
.NET Compact Framework에서는 부모 컨트롤의 글꼴을 상속할 수 없습니다.
"누른 상태로 있기" 이벤트가 발생된 사용자 지정 컨트롤의 위치를 감지하여 바로 가기 메뉴를 표시하려면 Popup 이벤트를 처리한 다음 MousePosition 속성을 사용하여 현재 마우스 좌표를 쿼리합니다.
사용자 지정 컨트롤에서 Tab 키를 눌러 이전 컨트롤로 이동하려면 Up 키가 감지될 때 KeyDown 이벤트 처리기에서 다음 코드를 사용합니다.
this.Parent.Controls( this.Parent.GetChildIndex(customcontrol) - 1).Focus()
Me.Parent.Controls( _ Me.Parent.GetChildIndex(customcontrol) - 1).Focus
방법 항목
다음 방법 항목에서는 사용자 지정 컨트롤을 사용하여 확장된 기능을 가져오는 방법을 보여 줍니다.
방법: 네이티브 콜백을 사용하여 TreeView 서브클래싱
방법: 네이티브 콜백을 사용하여 Button 서브클래싱
참고 항목
개념
관리되는 Window 프로시저를 사용하여 컨트롤 서브클래싱