연습: Windows Forms 도구 상자 컨트롤 만들기
포함 된 Windows Forms 도구 상자 컨트롤 템플릿은 Visual Studio 2010 SDK 에 자동으로 추가 되는 컨트롤을 만들 수 있습니다의 도구 상자 확장 설치 되어 있습니다. 이 연습에서는 템플릿을 사용 하 여 다른 사용자에 게 배포할 수 있습니다 카운터 컨트롤을 만드는 방법을 보여 줍니다.
사전 요구 사항
이 연습을 완료 하려면 설치 해야 해당 Visual Studio 2010 SDK.
참고
Visual Studio SDK에 대 한 자세한 내용은 참조 하십시오. Visual Studio 개요를 확장합니다..Visual Studio SDK를 다운로드 하는 방법를 참조 하십시오. Visual Studio 확장성 개발자 센터 MSDN 웹 사이트에서.
Visual Studio Windows Forms 도구 상자 컨트롤 템플릿 찾기
Windows Forms 도구 상자 컨트롤 템플릿을 사용할 수 있는 새 프로젝트 대화 상자에서 설치 되어 있는 템플릿, 이러한 위치에:
Visual Basic, 확장성. 언어 프로젝트의 Visual Basic입니다.
C#, 확장성. 언어 프로젝트의 C#입니다.
Windows Forms 도구 상자 컨트롤 프로젝트 만들기
Windows Forms 도구 상자 컨트롤 템플릿 정의 되지 않은 사용자가 컨트롤을 만들고 모든 컨트롤에 추가 하는 데 필요한 기능을 제공는 도구.
프로젝트를 만들려면
파일 메뉴에서 새로 만들기를 클릭한 다음 프로젝트를 클릭합니다.
에 있는 새 프로젝트 대화 상자에서 설치 되어 있는 템플릿, 원하는 프로그래밍 언어에 대 한 노드를 확장 하 고 선택 확장성. 프로젝트 형식 목록에서 선택한 Windows Forms 도구 상자 제어.
에 있는 이름 상자에서 프로젝트에 사용할 이름을 입력 합니다. (이 연습에서는 이름을 사용 하 여 카운터입니다.) 확인을 클릭합니다.
이 사용자 정의 컨트롤에 컨트롤에 배치 하는 특성을 포함 하는 솔루션을 만듭니다의 도구 상자, 및 있는 VSIX에 대 한 배포 매니페스트. 이름 솔루션의 이름 및 네임 스페이스, 이름 상자의 설정 되지만 나타나는 컨트롤의 이름을 설정 하지 않습니다는 도구. 이 연습의 뒷부분에서 설정 합니다.
컨트롤에 대 한 사용자 인터페이스 구축
카운터 컨트롤에 자식 컨트롤을 두 개 필요:는 Label 의 현재 수를 표시 하 고는 Button 카운트를 0으로 다시 설정 합니다. 호출자에 게 프로그래밍 방식으로 카운터를 증가 시키는 때문에 자식 컨트롤이 필요 합니다.
사용자 인터페이스를 구축할 수
솔루션 탐색기, ToolboxControl.cs 디자이너에서 열려면 두 번 클릭 합니다.
도구 상자, 드래그를 레이블 컨트롤을 디자인 화면에.
150 X 50 픽셀로, 사용자 정의 컨트롤의 크기를 조정 하 고 단추에 50 x 20 픽셀의 크기를 조정 합니다.
에 속성이 창 디자인 화면에서 컨트롤에 대해 다음 값을 설정 합니다.
컨트롤
Property
값
레이블 1
Text
""
Button1
Name
btnReset
Button1
Text
다시 설정
사용자 정의 컨트롤 코드 작성
카운터 컨트롤 증가 때마다 발생 하는 이벤트 카운터를 증분 하는 메서드를 노출 합니다는 다시 설정 단추와 세 가지 속성의 현재 수 및 표시 텍스트를 표시 또는 숨기기 여부를 저장 하는 다시 단추. ProvideTolboxControl 속성에서 결정은 도구 상자 의 카운터 컨트롤이 표시 됩니다.
사용자 정의 컨트롤 코드를
코드 창에서 폼의 load 이벤트 처리기를 두 번 클릭 합니다.
위의 이벤트 처리기에서 다음 예제와 같이 카운터 값 및 표시 텍스트를 저장 하는 문자열을 저장 하는 정수를 만듭니다.
int currentValue; string displayText;
다음 선언을 public 속성을 만듭니다.
public int Value { get { return currentValue; } } public string Message { get { return displayText; } set { displayText = value; } } public bool ShowReset { get { return btnReset.Visible; } set { btnReset.Visible = value; } }
호출자에 게 이러한 속성을 가져오고 설정 하는 카운터의 표시 텍스트를 표시 하거나 숨기려면 액세스할 수 있는 다시 설정 단추. 호출자가 읽기 전용의 현재 값을 확인할 수 있습니다 Value 않지만 속성을 설정할 수 없습니다 값 직접 합니다.
다음 코드를 삽입 Load 컨트롤에 대 한 이벤트.
private void ToolboxControl_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
레이블 텍스트를 설정에서 Load 이벤트 대상 속성의 값을 적용 하기 전에 로드할 수 있습니다. 레이블 텍스트는 생성자에서 설정에서 빈 레이블이 될 수 있습니다.
이 카운터를 증가 시키기 위해 다음 공용 메서드를 만듭니다.
public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); }
추가 선언에는 Incremented 이벤트.
public event EventHandler Incremented;
호출자에 게 카운터 값의 변경에 응답 하려면이 이벤트에 처리기를 추가할 수 있습니다.
리턴 디자인 보기 두 번 클릭 합니다는 다시 설정 단추를 생성 하는 btnReset_Click 이벤트 처리기에 다음과 같이 입력 하 고.
private void btnReset_Click(object sender, EventArgs e) { currentValue = 0; label1.Text = displayText + Value; }
클래스 정의에서 클래스 이름을 마우스 오른쪽 단추로 클릭 하 고 클릭 리팩터링를 클릭 이름 바꾸기, 다음 클래스의 이름을 변경 하 고 카운터. 에 표시 되는 이름입니다 있는 도구.
클래스 정의 바로 위에는 ProvideToolboxControl 특성 선언, 값을 첫 번째 매개 변수에서 변경 "Counter" 에 "General". 이 컨트롤에서 호스팅하는 항목 그룹의 이름을 설정 하는 도구.
다음 예제는 ProvideToolboxControl 특성 및 조정 된 클래스 정의입니다.
[ProvideToolboxControl("General", false)] public partial class Counter : UserControl
다음 예제에서는 완료 된 사용자 정의 컨트롤에 대 한 코드를 보여 줍니다.
using System; using System.Windows.Forms; namespace Counter { [ProvideToolboxControl("General", false)] public partial class Counter : UserControl { public Counter() { InitializeComponent(); } private void btnReset_Click(object sender, EventArgs e) { currentValue = 0; label1.Text = displayText + Value; } int currentValue; string displayText; public int Value { get { return currentValue; } } public string Message { get { return displayText; } set { displayText = value; } } public bool ShowReset { get { return btnReset.Visible; } set { btnReset.Visible = value; } } private void ToolboxControl_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; } public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); } public event EventHandler Incremented; } }
컨트롤 테스트
테스트 하는 도구 상자 제어, 먼저 개발 환경에서 테스트 하 고 컴파일된 응용 프로그램을 테스트 합니다.
컨트롤을 테스트하려면
F5 키를 누릅니다.
이 프로젝트를 작성 하 고 컨트롤 설치 되어 Visual Studio 두 번째 인스턴스를 엽니다.
Visual Studio 새 인스턴스를 Windows Forms 프로젝트를 만듭니다.
솔루션 탐색기에서 Form1.cs 디자이너에서 열려면 두 번 클릭 합니다.
에 도구 상자의 카운터 컨트롤에 표시 해야 합니다는 일반 섹션입니다.
드래그를 카운터 폼에 제어 하 고 선택 합니다. Value, Message, 및 ShowReset 속성에 표시 됩니다는 속성 와 함께 상속 되는 속성 창에서 UserControl.
설정에서 Message 속성을 개수:.
드래그를 Button 폼에 제어 하 고 단추의 이름 및 텍스트 속성 설정 테스트.
코드 보기에서 form1.cs를 열고 클릭 처리기를 만들 해당 단추를 두 번 클릭 합니다.
클릭 처리기를 호출 합니다. counter1.Increment().
생성자 함수를 호출 하면 InitializeComponent, 형식 Counter1.Incremented = 및 TAB 키를 두 번 누릅니다.
Visual Studio 폼 수준 처리기를 생성 하는 Counter1.Incremented 이벤트입니다.
강조 표시는 Throw 이벤트 처리기에서 형식 문을 사서함을, 다음 사서함을 코드 조각에서 생성 하는 메시지 상자 두 번 TAB 키를 누릅니다.
다음 줄에 다음을 추가 if/else 블록의 표시 여부를 설정 하는 다시 단추.
if (counter1.Value < 5) counter1.ShowReset = false; else counter1.ShowReset = true;
F5 키를 누릅니다.
폼이 열립니다. 해당 카운터 다음 텍스트 컨트롤에 표시 됩니다.
개수: 0
테스트를 클릭합니다.
카운터 증가 및 Visual Studio 메시지 상자를 표시 합니다.
메시지 상자를 닫습니다.
해당 다시 단추가 사라집니다.
클릭 테스트 카운터에 도달할 때까지 5, 및 다음 메시지 상자를 닫습니다.
다시 re-appears 단추.
다시 설정을 클릭합니다.
카운터를 다시 설정 하려면 0.
다음 단계
강력한는 도구 상자 컨트롤을 Visual Studio 라는 파일을 만듭니다 프로젝트 이름.vsix 프로젝트의 \bin\debug\ 폴더에 있습니다. 네트워크 또는 웹 사이트에.vsix 파일을 업로드 하 여 컨트롤을 배포할 수 있습니다. 사용자.vsix 파일을 열 때 컨트롤을 설치 하 고 Visual Studio 추가 도구 는 사용자의 컴퓨터에. 또는.vsix 파일을 업로드할 수 있는 Visual Studio 갤러리 웹 사이트에서 검색 하 여 찾을 수 있습니다. 사용자는 확장 관리자.