연습: Visual C#을 사용하여 Windows Forms 컨트롤에서 상속

업데이트: 2007년 11월

Visual C# 2005에서는 상속을 통해 강력한 사용자 지정 컨트롤을 만들 수 있습니다. 상속을 통하면 표준 Windows Form 컨트롤의 모든 기본 기능을 보유하는 컨트롤을 만들 수 있을 뿐 아니라 사용자 지정 기능도 결합시킬 수 있습니다. 이 연습에서는 ValueButton이라는 간단한 상속된 컨트롤을 만듭니다. 이 단추는 표준 Windows Form Button 컨트롤로부터 기능을 상속하고 ButtonValue라는 사용자 지정 속성을 노출합니다.

참고:

실제 설정이나 버전에 따라서 화면에 나타나는 대화 상자와 메뉴 명령이 도움말의 설명과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

프로젝트 만들기

새 프로젝트를 만들 때는 루트 네임스페이스, 어셈블리 이름 및 프로젝트 이름을 설정하고 기본 구성 요소가 올바른 네임스페이스에 놓이도록 하기 위해 이름을 지정해야 합니다.

ValueButtonLib 컨트롤 라이브러리 및 ValueButton 컨트롤을 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭하여 새 프로젝트 대화 상자를 엽니다.

  2. Visual C# 프로젝트 목록에서 Windows 컨트롤 라이브러리 프로젝트 템플릿을 선택한 다음 이름 상자에 ValueButtonLib를 입력합니다.

    기본적으로 프로젝트 이름인 ValueButtonLib도 루트 네임스페이스에 할당됩니다. 루트 네임스페이스는 어셈블리에서 구성 요소의 이름을 한정하는 데 사용됩니다. 예를 들어, 두 어셈블리에서 ValueButton이라는 이름의 구성 요소가 제공되는 경우 ValueButtonLib.ValueButton을 사용하여 ValueButton 구성 요소를 지정할 수 있습니다. 자세한 내용은 네임스페이스(C# 프로그래밍 가이드)를 참조하십시오.

  3. 솔루션 탐색기에서 UserControl1.cs를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 이름 바꾸기를 선택합니다. 파일 이름을 ValueButton.cs로 변경합니다. 모든 참조의 이름을 코드 요소 'UserControl1'로 바꿀지 여부를 묻는 메시지가 나타나면 예 단추를 클릭합니다.

  4. 솔루션 탐색기에서 ValueButton.cs를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 선택합니다.

  5. public partial class ValueButton이라는 class 문 줄을 찾아 이 컨트롤이 UserControl에서 상속하는 형식을 Button으로 변경합니다. 그러면 상속된 컨트롤이 Button 컨트롤의 모든 기능을 상속할 수 있습니다.

  6. 솔루션 탐색기에서 ValueButton.cs 노드를 열어 디자이너에서 생성된 코드 파일인 ValueButton.Designer.cs를 표시합니다. 코드 편집기에서 이 파일을 엽니다.

  7. InitializeComponent 메서드를 찾아 AutoScaleMode 속성을 할당하는 줄을 제거합니다. 이 속성은 Button 컨트롤에는 없습니다.

  8. 파일 메뉴에서 모두 저장을 선택하여 프로젝트를 저장합니다.

    참고:

    더 이상 비주얼 디자이너를 사용할 수 없습니다. Button 컨트롤은 자체적으로 그려지므로 디자이너에서 모양을 수정할 수 없습니다. 이 컨트롤의 시각적 표시는 코드에서 수정하지 않을 경우 이를 상속해 준 클래스(즉, Button)와 같습니다. UI 요소가 없는 구성 요소를 디자인 화면에 여전히 추가할 수 있습니다.

상속된 컨트롤에 속성 추가

상속된 Windows Form 컨트롤의 가능한 용도 중 하나는 표준 Windows Form 컨트롤과 같은 모양과 분위기를 제공하지만 사용자 지정 속성을 노출하는 컨트롤을 만드는 것입니다. 이 단원에서는 사용자 컨트롤에 ButtonValue라는 속성을 추가합니다.

Value 속성을 추가하려면

  1. 솔루션 탐색기에서 ValueButton.cs를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 코드 보기를 클릭합니다.

  2. class 문을 찾아 { 바로 뒤에 다음 코드를 입력합니다.

    [C#]

    // Creates the private variable that will store the value of your 
    // property.
    private int varValue;
    // Declares the property.
    public int ButtonValue
    {
       // Sets the method for retrieving the value of your property.
       get
       {
          return varValue;
       }
       // Sets the method for setting the value of your property.
       set
       {
          varValue = value;
       }
    }
    

    이 코드는 ButtonValue 속성의 저장 및 검색에 사용할 수 있는 메서드를 설정합니다. get 문은 반환되는 값을 private 변수인 varValue에 저장된 값으로 설정하고, set 문은 value 키워드를 사용하여 private 변수의 값을 설정합니다.

  3. 파일 메뉴에서 모두 저장을 선택하여 프로젝트를 저장합니다.

컨트롤 테스트

컨트롤은 독립 실행형 프로젝트가 아니며 컨테이너에서 호스팅되어야 합니다. 컨트롤을 테스트하려면 해당 컨트롤이 실행될 수 있는 테스트 프로젝트를 제공해야 합니다. 또한 해당 컨트롤을 빌드(컴파일)하여 테스트 프로젝트에서 해당 컨트롤에 액세스할 수 있도록 해야 합니다. 이 단원에서는 사용자 정의 컨트롤을 빌드하고 이를 Windows Form에서 테스트합니다.

컨트롤을 빌드하려면

  • 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    컴파일러 오류 또는 경고 없이 빌드가 성공적이어야 합니다.

테스트 프로젝트를 만들려면

  1. 파일 메뉴에서 추가를 가리킨 다음 새 프로젝트를 클릭하여 새 프로젝트 추가 대화 상자를 엽니다.

  2. Visual C# 노드 아래에 있는 Windows 노드를 선택하고 Windows 응용 프로그램을 클릭합니다.

  3. 이름 상자에 Test를 입력합니다.

  4. 솔루션 탐색기에서 테스트 프로젝트에 대한 참조 노드를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 참조 추가를 선택하여 참조 추가 대화 상자를 표시합니다.

  5. 프로젝트라는 레이블이 붙은 탭을 클릭합니다. ValueButtonLib 프로젝트가 프로젝트 이름 아래에 나열됩니다. 프로젝트를 두 번 클릭하여 참조를 테스트 프로젝트에 추가합니다.

  6. 솔루션 탐색기에서 Test를 마우스 오른쪽 단추로 클릭한 다음 빌드를 선택합니다.

폼에 컨트롤을 추가하려면

  1. 솔루션 탐색기에서 Form1.cs를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에서 디자이너 보기를 선택합니다.

  2. 도구 상자에서 ValueButtonLib 구성 요소를 클릭합니다. ValueButton을 두 번 클릭합니다.

    폼에 ValueButton이 나타납니다.

  3. ValueButton을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 속성을 선택합니다.

  4. 속성 창에서 이 컨트롤의 속성을 검사합니다. 이들 속성은 ButtonValue라는 추가 속성을 제외하면 표준 단추에서 노출한 속성과 동일합니다.

  5. ButtonValue 속성을 5로 설정합니다.

  6. 도구 상자의 모든 Windows Forms 탭에서 Label을 두 번 클릭하여 Label 컨트롤을 폼에 추가합니다.

  7. Label을 폼의 가운데로 재배치합니다.

  8. valueButton1을 두 번 클릭합니다.

    코드 편집기가 valueButton1_Click 이벤트에서 열립니다.

  9. 다음 코드 줄을 삽입합니다.

    [C#]

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. 솔루션 탐색기에서 Test를 마우스 오른쪽 단추로 클릭한 다음 바로 가기 메뉴에 있는 시작 프로젝트로 설정을 선택합니다.

  11. 디버그 메뉴에서 디버깅 시작을 선택합니다.

    Form1이 나타납니다.

  12. valueButton1를 클릭합니다.

    상속된 컨트롤의 ButtonValue 속성이 valueButton1_Click 메서드를 통해 label1로 전달되었음을 보여 주는 숫자 '5'가 label1에 표시됩니다. 따라서 ValueButton 컨트롤은 표준 Windows Form 단추의 모든 기능을 상속하지만 추가적인 사용자 지정 속성은 노출합니다.

참고 항목

작업

방법: 도구 상자 사용자 지정 대화 상자에 컨트롤 표시

연습: Visual C#에서 합성 컨트롤 제작

기타 리소스

구성 요소를 사용한 프로그래밍

구성 요소 제작 연습