다음을 통해 공유


컨트롤 및 구성 요소 제작 문제 해결

이 항목에서는 구성 요소와 컨트롤을 개발할 때 발생하는 다음과 같은 일반적인 문제를 나열합니다.

  • 도구 상자에 컨트롤을 추가할 수 없습니다.

  • Windows Forms 사용자 정의 컨트롤 또는 구성 요소를 디버깅할 수 없습니다.

  • 상속된 컨트롤 또는 구성 요소에서 이벤트가 두 번 발생합니다.

  • 디자인 타임 오류: "구성 요소 '구성 요소 이름'을 만들지 못했습니다."

  • STAThreadAttribute

  • 도구 상자에 구성 요소 아이콘이 표시되지 않습니다.

도구 상자에 컨트롤을 추가할 수 없습니다.

다른 프로젝트에서 만든 사용자 지정 컨트롤 또는 타사 컨트롤을 도구 상자에 추가하려는 경우 수동으로 수행해야 합니다. 현재 프로젝트가 컨트롤 또는 구성 요소를 포함하는 경우 도구 상자에 자동으로 표시되어야 합니다. 자세한 내용은 연습: 도구 상자에 자동으로 사용자 지정 구성 요소 채우기를 참조하세요.

도구 상자에 컨트롤을 추가하려면

  1. 바로 가기 메뉴에서 도구 상자를 마우스 오른쪽 단추로 클릭하고 항목 선택을 선택합니다.

  2. 도구 상자 항목 선택 대화 상자에서 구성 요소를 추가합니다.

    • .NET Framework 구성 요소 또는 컨트롤을 추가하려면 .NET Framework 구성 요소 탭을 클릭합니다.

      -또는-

    • COM 구성 요소 또는 ActiveX 컨트롤을 추가하려면 COM 구성 요소 탭을 클릭합니다.

  3. 컨트롤이 대화 상자에 표시되면 선택되었는지 확인한 다음 확인을 클릭합니다.

    컨트롤이 도구 상자에 추가됩니다.

  4. 컨트롤이 대화 상자에 나열되지 않는 경우 다음을 수행합니다.

    1. 찾아보기 단추를 클릭합니다.

    2. 컨트롤을 포함하는 .dll 파일이 포함된 폴더로 이동합니다.

    3. .dll 파일을 선택하고 열기를 클릭합니다.

      컨트롤이 대화 상자에 나타납니다.

    4. 컨트롤이 선택되었는지 확인한 다음 확인을 클릭합니다.

      컨트롤이 도구 상자에 추가됩니다.

Windows Forms 사용자 정의 컨트롤 또는 구성 요소를 디버깅할 수 없습니다.

컨트롤이 UserControl 클래스에서 파생된 경우 테스트 컨테이너로 해당 런타임 동작을 디버그할 수 있습니다. 자세한 내용은 방법: UserControl의 런타임 동작 테스트를 참조하세요.

다른 사용자 지정 컨트롤 및 구성 요소는 독립 실행형 프로젝트가 아닙니다. Windows Forms 프로젝트와 같은 애플리케이션에 의해 호스팅되어야 합니다. 컨트롤 또는 구성 요소를 디버깅하려면 Windows Forms 프로젝트에 추가해야 합니다.

컨트롤 또는 구성 요소를 디버깅하려면

  1. 빌드 메뉴에서 솔루션 빌드를 클릭하여 솔루션을 빌드합니다.

  2. 파일 메뉴에서 추가, 새 프로젝트를 차례로 선택하여 애플리케이션에 테스트 프로젝트를 추가합니다.

  3. 새 프로젝트 추가 대화 상자에서 프로젝트 형식에 Windows 애플리케이션을 선택합니다.

  4. 솔루션 탐색기에서 새 프로젝트에 대한 참조 노드를 마우스 오른쪽 단추로 클릭합니다. 바로 가기 메뉴에서 참조 추가를 클릭하여 컨트롤 또는 구성 요소를 포함하는 프로젝트에 참조를 추가합니다.

  5. 테스트 프로젝트에서 컨트롤 또는 구성 요소의 인스턴스를 만듭니다. 구성 요소가 도구 상자에 있는 경우 디자이너 화면으로 끌어 오거나 다음 코드 예제와 같이 프로그래밍 방식으로 인스턴스를 만들 수 있습니다.

    Dim Component1 As New MyNeatComponent()
    
    MyNeatComponent Component1 = new MyNeatComponent();
    

    이제 컨트롤 또는 구성 요소를 정상적으로 디버깅할 수 있습니다.

디버깅에 대한 자세한 내용은 Visual Studio의 디버깅연습: 디자인 타임에 사용자 지정 Windows Forms 컨트롤 디버깅을 참조하세요.

상속된 컨트롤 또는 구성 요소에서 이벤트가 두 번 발생합니다.

중복된 Handles 절 때문일 수 있습니다. 자세한 내용은 Visual Basic에서 상속된 이벤트 처리기 관련 문제 해결을 참조하세요.

디자인 타임 오류: "구성 요소 '구성 요소 이름'을 만들지 못했습니다."

구성 요소 또는 컨트롤은 매개 변수 없이 매개 변수 없는 기본 생성자를 제공해야 합니다. 디자인 환경에서 구성 요소 또는 컨트롤의 인스턴스를 만드는 경우 매개 변수를 사용하는 생성자 오버로드에 매개 변수를 제공하려고 하지 않습니다.

STAThreadAttribute

STAThreadAttribute는 Windows Forms가 단일 스레드 아파트 모델을 사용한다는 것을 CLR(공용 언어 런타임)에 알립니다. Windows Forms 애플리케이션의 Main 메서드에 이 특성을 적용하지 않는 경우 의도하지 않은 동작이 발생할 수 있습니다. 예를 들어, 배경 이미지가 ListView와 같은 컨트롤에 대해 표시되지 않을 수 있습니다. 일부 컨트롤은 올바른 자동 완성 및 끌어서 놓기 동작에 대해 이 특성을 요구할 수도 있습니다.

도구 상자에 구성 요소 아이콘이 표시되지 않습니다.

ToolboxBitmapAttribute를 사용하여 아이콘을 사용자 지정 구성 요소에 연결하는 경우 비트맵은 자동 생성된 구성 요소에 대한 도구 상자에 나타나지 않습니다. 비트맵을 보려면 도구 상자 항목 선택 대화 상자를 사용하여 컨트롤을 다시 로드합니다. 자세한 내용은 방법: 컨트롤에 대한 도구 상자 비트맵 제공을 참조하세요.

참고 항목