2009-05-04 10 views
5

좋아요 그래서처럼에 포함 된 양식으로 탭을 사용하는 대형 CRUD 애플리케이션이 ->포함 된 양식

public static void ShowFormInContainerControl(Control ctl, Form frm) 
    { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Dock = DockStyle.Fill; 
     frm.Visible = true; 
     ctl.Controls.Add(frm); 
    } 

내가 다음 폼로드 이벤트에 아래의 전화를 부모 폼의 ->

// Embedd the child form in the this Parent 
     WinFormCustomHandling.ShowFormInContainerControl(pnlModuleHost, _frmWWCModuleHost); 

은 내 앞의 질문에 대한 응답으로 저 HERE에게 주어졌다.

필자가 진행 한대로 임베디드 양식의 여러 계층이 발생하기를 기다리는 재앙이며 사용자 정의 컨트롤이 계속 팝업으로 나타남을 계속 느낄 수있었습니다. 누구든지 사용자 컨트롤 대 폼 포함에 대한 구체적인 조언을 해줄 수 있습니까?

내 영감에 대한 이전 질문을 참조하십시오. HERE

또한 내 현재 포함 된 양식 레이아웃이 어떻게 보이는지 보여주는 스크린 샷은 HERE입니다.

답변

2

을 살펴 것 같아요 난 UserControl을 사용하여 그 생각이 단순 해졌고, 디자이너에서 계속 진행되는 것을 볼 수있다. (원하는 경우) 폼은 컨테이너 내에서 뷰로 사용하려는 경우에는 절대 필요하지 않을 물건들을 담고있다. .

는 방법이 비교 :

public static void DockControl(this Control control, UserControl userControl) 
      { 
       userControl.Dock = DockStyle.Fill; 
       control.Controls.Clear(); 
       control.Controls.Add(userControl); 
      } 
3

내 관점은 아마 당신이 너무 많이 중요하지 않기로되는 방향이다 주셔서 감사합니다. 나는 이것이 더 표준적인 접근 방식이며 앞으로 더 큰 유연성을 제공 할 것이기 때문에 사용자 컨트롤을 선택하기로했다. 예를 들어, 고객이 귀하에게 와서 두 개의 탭을 하나의 탭으로 결합하고자한다고한다면 어떻게해야합니까? 사용자 컨트롤을 사용하면 컨트롤을 단일 폼으로 결합한 다음 원 클릭없이 단일 탭에 두 개의 컨트롤을 플롭 (plop) 할 수 있습니다. 그런 다음 요구 사항이 다시 변경되면 다음 달에 다시 변경합니다.

당신은 이해할 수있는 많은 것들을 서로 통신해야하는 크고 복잡한 응용 프로그램을 가지고 있습니다. 나는 당신이 스스로에게 묻어야하는 질문이 "양식 또는 사용자 정의 컨트롤"이 아니라고 생각합니다. 자신에게 묻어야하는 질문은 "이 앱에 적합한 아키텍처인가요?"입니다.

나는 플러그인 형 아키텍처는 당신이 가지고있는 많은 움직이는 부분에 더 적합 할 수있다 통합 된 디자인 ... 아니면 마이크로 소프트의 패턴 및 사례 복합 응용 프로그램 블록 (CAB)

+0

흥미 롭, 당신은 당신이 "플러그 형"아키텍처 무슨 뜻인지 설명하는 것이 가능할 것이다? 당신은 형식이 무엇을 추상화하고 그 기본 기능을 수행하기 위해 상호 교환 가능한 UC가 다른 것을 말하는가? –

+0

다음은 확장 가능한 아키텍처를 중심으로 애플리케이션을 설계하는 데 유용한 기사입니다. http://www.code-magazine.com/Article.aspx?quickid=0801041 – Utensil

관련 문제