티스토리 뷰



비주얼스튜디오를 사용하여 화면을 작성하거나 데이터베이스를 다루면서 자주 접하는 창이 있다면 도구 상자(Toolbox) 입니다. 시스템에서 미리 준비한 다양한 컨트롤을 끌어다놓기(Drag & Drop)으로 사용자 화면에 추가하고 해당 컨트롤의 몇가지 속성만 설정하면 간편하게 관련 기능을 사용할 수 있는 방식입니다. 


도구 상자의 구성을 살펴보면 공용 컨트롤, 컨테이너, 메뉴 및 도구 모음, 데이터, 구성요소, 인쇄, 대화 상자, WPF 상호 운용성, 보고, VB PowerPacks 등 비주얼스튜디오에서 C#으로 기능을 만들어가는데 필요한 대부분의 것이 잘 준비되어 있으므로 개발자 입장에서는 자신이 구현하려는 기능에 적절한 요소를 잘 찾아서 배치하고 설정하는 것만으로도 프로그래밍을 수행할 수 있는 환경입니다. 그렇지만, 때로는 개발자 나름의 컨트롤을 만들어 놓고 해당 컨트롤을 프로그램의 핵심 부품으로 활용하여 완성품인 프로그램을 산출해야 하는 경우도 있습니다. 이런 경우에 사용할 수 있는 것이 사용자 정의 컨트롤 또는 커스텀 컨트롤(Custom control)입니다. 사용자 컨트롤을 생성해 놓으면 위의 그림과 같은 도구 상자에 자신이 만든 컨트롤을 등록해 놓고 시스템 컨트롤과 같은 방식으로 간편하게 활용할 수 있습니다.


■ 사용자 정의 컨트롤 컨테이너

완성된 사용자 정의 컨트롤을 도구 상자에 등록하는 과정을 먼저 살펴보면 아래의 그림과 같이 사용자 정의 컨트롤의 최종 산출물은 확장자가 *.dll 또는 *.exe인 실행파일이어야 합니다.


그러므로, 사용자 정의 컨트롤은 *dll 또는 *.exe를 산출하는 어떠한 프로젝트에도 포함될 수 있습니다. 예를 들어 나름의 사용자 정의 컨트롤 만을 모아놓은 프로젝트를 별도로 만들어서 사용할 수도 있고 윈도우 폼 프로젝트로 작성하고 있는 기존 프로젝트에 사용자 정의 컨트롤을 추가하여 중간 산출물로 도구 상자에 추가한 다음 해당 컨트롤로 기존 프로젝트를 완성하는 방식을 적용할 수도 있습니다. 

본 포스팅에서는 윈도우 폼 프로젝트를 사용자 정의 컨트롤의 컨테이너로 사용했고 두개의 사용자 컨트롤 클래스를 추가했습니다. 컨테이너로 사용하는 프로젝트에 사용자 정의 컨트롤 클래스가 아닌 다른 클래스나 화면이 있더라도 추후 도구상자에 등록하는 시점에서는 사용자 정의 컨트롤 클래스만 자동 추출되어 적용되므로 참고하시기 바랍니다.



■ 사용자 정의 컨트롤 추가하기

솔루션 탐색기의 프로젝트 메뉴를 우측 마우스 버튼으로 클릭하여 프로젝트 팝업메뉴>추가>사용자 정의 컨트롤을 선택합니다.


아래와 같은 클래스 추가 화면에서 사용자 정의 컨트롤의 이름을 적절하게 부여합니다.


사용자 정의 컨트롤의 화면은 기존 시스템 컨트롤을 사용하거나 컨트롤들을 복합적으로 조합하거나 자체 드로잉을 사용하는 등 다양한 방법을 적용하여 작성하고 코드를 통해서 나름의 기능을 추가합니다.


위의 예제는 레이블과 폼의 배경만을 수정했으나 필요에 따라 일반적인 화면 작성법을 적용하여 사용자 정의 컨트롤을 작성하고 빌드합니다.


■ 컨트롤 아이콘 적용하기

사용자 정의 컨트롤을 제작하여 도구 상자에 추가하면 기본적으로는 톱니 모양의 기본 아이콘을 표시합니다. 새롭게 추가한 사용자 정의 컨트롤에 대한 특성과 가독성을 위해서 아이콘을 등록하려면 16 * 16 크기의 bmp파일을 준비합니다. 다만 크기가 크면 해당 크기로 축소 표시하므로 참조하시기 바랍니다.

컨트롤 아이콘을 적요하기 위해서는 아래의 코드와 같이 컨트롤 클래스 바로 앞에 ToolboxBitmap 속성 값을 설정하면 해당 아이콘을 도구상자에 표시할 수 있습니다.

[ToolboxBitmap(@" c:\images\cntlanalogbox.bmp")]
public partial class CntlAnalogBox : UserControl
{
    //......
}
이미지 파일에 대한 경로 지정 방법은 위의 예제와 같이 단순하게 이미지에 대한 절대 경로를 지정할 수도 있고 시스템 자원을 지정할 수도 있습니다.

개발자가 제작한 컨트롤 아이콘을 위의 예제와 같이 프로젝트의 절대 경로로 지정하면 프로젝트를 다른 폴더로 옮기거나 다른 컴퓨터에서 작업하는 경우에는 해당 경로를 모두 수정해야 하는 불편이 생길 수도 있습니다. 이러한 경우에는 이미지 파일을 프로젝트의 기본 폴더(하위 폴더가 아닌 프로젝트의 루트 폴더)에 저장하고 이미지 속성을 아래의 그림과 같이 빌드 작업을 "Embeded resource" 또는 "포함 리소스"로 하고 ToolboxBitmap 지정을 컨트롤 클래스의 타입과 이미지 이름을 "[ToolboxBitmap(typeof(CntlAmpMeter), "CntlAmpMeter.bmp")]"와 같이 지정하면 프로젝트에 포함된 이미지의 상대 경로로 아이콘을 지정할 수 있습니다. 반드시 이미지를 프로젝트의 루트 폴더에 두어야 하는 것을 잊지 마세요.




■ 도구상자에 컨트롤 등록하기

빌드한 컨테이너(*.dll 또는 *.exe)를 빌드했으면 도구 상자를 열고 해당 컨트롤을 추가하고 싶은 컨트롤 그룹으로 이동하고 우측 마우스 버튼으로 팝업 메뉴를 띄워 를 선택합니다.


"항목선택" 메뉴를 선택하면 비주얼스튜디오는 해당 그룹의 관련 자료를 검색하여 아래와 같은 항목 선택 창을 보여줍니다. 좌측에 체크된 항목들이 도구 상자에도 뿌려지고 있는 항목들입니다.


"찾아보기"를 클릭하여 새롭게 빌드한 컨테이너 파일(*.dll 또는 *.exe)을 선택하면 아래와 같이 새롭게 등록한 사용자 정의 컨트롤을 확인 할 수 있습니다.



댓글
댓글쓰기 폼