2009-06-04 2 views
1

상속받을 BaseForm 작성 중입니다. BaseForm에는 내 응용 프로그램의 몇 가지 기본 표준 컨트롤이 있습니다.상속 된 winform 컨트롤에 대한 액세스 금지

문제는 다음과 같습니다. 상속 된 양식에서이 컨트롤을 사용하고 변경할 수는 있지만 양식에서 제거하지 못하도록하고 싶습니다.

가장 큰 문제는 사용자가 상속 된 양식에 탭을 추가해야하는 TabControl입니다. BaseForm에서 TabControl의 "한정자"속성을 private로 설정하면 상속 된 Forms에서 새 탭을 추가 할 수 없습니다. BaseForm에서 TabControl의 "한정자"속성을 protected로 설정하면 양식을 상속하면 BaseForm에서 TabControl이 제거 될 수 있습니다.

중단 할 거리가 있습니까? 주문 설계?

+0

Visual Studio에서 템플릿 양식을 만들 수 없습니까? –

답변

4

구스타보,

당신은 당신이 상속 개발자를 강제로 경험하게 될 것입니다 문제의 산맥의 첫 번째 산기슭의 작은 언덕의 아래쪽에 서있는 "기본 양식 클래스입니다." 내 경험에 비추어 볼 때 이러한 방식으로 구축 된 프레임 워크는 매우 취약하기 쉽고 개발자가 사용하기가 어렵습니다.

TabControl을 비공개로 설정하고 양식 자체에 공용 "탭"속성을 구현하면이 특별한 장애물을 극복 할 수 있다고 상상할 수 있지만이 산의 정점에 도달하고 당신 앞에 다른 많은 키가 큰 산들이 있다고. 나는 당신이 접근 방식을 완전히 재고 할 것을 제안합니다.

// set the Modifiers property on tabControl1 to "Private" then implement this 
public TabControl.TabPageCollection TabPages 
{ 
    get { return tabControl1.TabPages; } 
} 

상속은 공통 기능을 제공해야하며 균일 한 구성을 제공해서는 안됩니다. 개발자는 "핵심 화면"을 구현하고 프레임 워크를 설계하여 개발자가 컨트롤을 화면에 "플러그"할 수 있도록해야합니다.

Composite UI Application Block은 내가 알지 못하는 것보다 최근의 것이 있을지 모르지만 시작하기 좋은 곳입니다.

+0

댓글 주셔서 감사합니다. 내 프로젝트는 플러그인 기반 응용 프로그램입니다. 타사 사용은 추가 기능에 의해 기능적으로 추가됩니다. 상속 형식에 대한 제 질문은 회사 내부의 프로젝트를 제어하는 ​​것입니다. 당신의 아이디어는 좋지만 상속 된 Form을 만들기 위해 Visual Design을 사용하고 싶기 때문에 public-properties/private-attribute를 사용하지 않으려 고합니다. –

+0

여전히 작동해야합니다. 컨트롤이 비공개 인 경우, 서브 클래 싱 된 형태로 고정되어 표시됩니다. –

1

Visual Studio 디자이너에서 양식이 "멋지게"작동하도록하려면 Tab 컨트롤을 비공개 양식을 직접 편집 할 때 작동하지만 운이 좋으면 실패합니다. 자손 편집을 시도하십시오.

저는 @Michael Meadows가 자신의 대답으로 정확하다고 믿습니다. 과거에 내가 원하는 것을 제공하지 못했던 정교한 프레임 워크를 직접 만들었습니다.

광범위하게 당신이 상속과 함께 일을 당겨보고있는 곳, 말하기

, 나는 구성가 더 나은 서비스를 제공 할 것으로 생각합니다. 적어도, 이것은 나의 경험이다.

가벼운 아이디어는 제레미 밀러 (Zeremy Millers) 블로그 게시물 Build your own CAB 시리즈를 참조하십시오.

관련 문제