멀티 패널 컨트롤

RTFM/Winform 2009. 6. 18. 18:22

http://www.codeproject.com/KB/cs/multipanelcontrol.aspx

 

폼을 구성하다 보면, 여러 개의 패널을 준비하여 놓고 특정 조건에 따라서 이 중 한 개만을 보여줘야 하는 경우가 종종 있습니다.

현재까지 발표된 닷넷 프레임웍에는 (디자인 타임을 지원하며) 이러한 기능을 제공하는 컨트롤은 없습니다.

그래서 대안으로,

1. 탭 컨트롤을 이용하는데, 선택되지 않은 나머지 탭을 감추는 등을 로직이 런타임에 실행되어야 합니다.

2. 패널 컨트롤을 이용할 수도 있는데, 위와 같은 문제와 더불어, 디자인 타임에는 모든 패널을 표시할 수 밖에 없어 폼의 레이아웃이 런타임과 달라 집니다.

등의 방법을 사용할 수 있는데, 이 아티클 필자의 말처럼 아주 ugly 합니다.

 

이 아티클에서는 디자인 타임을 지원하는 멀티 패널 컨트롤을 소개합니다.

스샷을 보시면 하나의 MultiPanel 컨트롤 안에 세 개의 페이지가 추가된 것을 볼 수 있는데, 폼 디자이너에서는 각각의 페이지를 별도로 표시하고 있습니다.

 

사용법은 무척 간단합니다.

디자인 타임에서 MultiPanel 컨트롤의 스마트 태그나 Document Online 창을 이용해 적절히 페이지를 구성한 후, 코드에서는 MultiPanel.SelectedPage 속성을 읽거나 쓰면 됩니다.

 

이 자체로도 충분히 유용한 컨트롤이지만, 선택된 페이지가 아닌 모든 페이지에 접근하는 방법이 없어 소스를 약간 수정해 보겠습니다.

각각의 페이지에 접근하기 위해서 인덱서를 사용할 것인데, 총 3개의 오버로드를 제공하겠습니다.

이를 사용하는 코드는 다음과 같습니다.

 

원 제작자의 소스는 제일 위 원문 링크에서 받으시면 되고, 제가 수정한 소스는 아래 링크에서 받을실 수 있습니다.

: