VB4를 배우고 버튼을 폼으로 드래그하고 해당 버튼을 두 번 클릭 한 다음 코드를 마법으로 축복받은 이벤트 핸들러에 입력하는 것을 기억합니다. QBASIC에서 온 저는 "VB"의 "V"에 감격했습니다. 시각 디자이너는 말 그대로 빵을 만든 이래로 최고의 제품이었습니다.
물론 프로그래밍 방식으로 모든 작업을 수행 할 수 있지만 "V"의 마법은 매우 매력적 이었으므로 해당 버튼을 끌 수는 없었습니다. 우리는 그 길을 타도록 장려되었습니다.
그러나 몇 년 전에 나는 C #과 .net 프레임 워크에 대해 배우기 시작했고 내가 생각한 모든 것이 방금 창 밖으로 나간 방식에 매료되었습니다. VB6에는 .net에서 완전히 공개 된 많은 마술 이 있습니다 InitializeComponents
. 예를 들어 생성자와 메소드를 사용하십시오. 후자에는 툴박스에서 드래그 한 모든 컨트롤 인스턴스, 등록한 모든 이벤트 및 디자이너에서 설정 한 속성이 있습니다.
그리고 그건 괜찮아요 .. 그냥, 나는 무슨 일이 일어나고 있는지 "소유"하지 않는 것처럼 느껴집니다.이 코드는 디자이너를 통해서만 수정할 수 있습니다. 한 양식에서 다른 양식으로 "확인"이라고 표시된 버튼을 복사 할 때마다 (때로는 형제 "취소"와 함께) 실제로 코드를 복제하는 것입니다. 이것이 죄 가 아닙니다? 교황 은“DRY는 자신을 반복하지 않는다”고 말했다 .
모든 객관성에서 종교와 사상 학교는 기본 양식에서 양식을 파생 시켜서 "확인"버튼 (및 모든 친구)을 기본 양식에 두어야합니까? 유사한 뭔가 FormBase
이로부터 파생 DialogFormBase
; 코드를 입력하여 곧바로 생성 된 모든 클래스 버튼은 클래스가 어떻게 구성되어 있는지에 따라 생성됩니다 (즉, 생성자 열거 형 인수는 생성 할 버튼을 결정합니다), 컨트롤은 분할 패널과 흐름 레이아웃 패널의 배열 안에 배치되며Content
기본 콘텐츠 패널에 맞습니다. 이것이 마스터 페이지와 콘텐츠 자리 표시 자에서 ASP.net이하는 일이 아닙니까? 새 "마스터 페이지"가 필요할 때 양식을 파생하지만이 새 "마스터 페이지"는 여전히 기본 폼 클래스에서 파생되므로 전체 응용 프로그램에서 시각적 인 일관성을 유지합니다.
나에게 그것은 WinForms의 디자이너와 함께했던 다른 것보다 훨씬 더 많은 코드 재사용이며, 어렵지 않고 코드를 제어 할 수없는 200 줄 방법으로 어지럽히 지 않습니다. 내가 좋아하는 곳에 의견을 쓰면 디자이너가 덮어 쓰지 않을 것입니다. : 난 그냥이 링크에 나를 데리고 무엇 패턴과 구조의 문제, 같아요 일반적인 기능을 공유 할 것입니다 윈도우 양식에 대한 최고의 디자인 나는 제외에 자리 깨달았다, 이 대답은, 난 정확히 제시 디자이너 고려 사항으로 인해 양식 상속 에 대해 조언 합니다. 그것이 내가 얻지 못한 부분 입니다.코드 구조 고려 사항 때문에 , 특히 폼과 컨트롤 상속과 관련하여 , 디자이너 이외의 다른 것을 피할 이유가 없습니다 .
우리는 모두 게으른 수 없습니다, 그래서 내가 어떤 부분을 놓치고 있습니까?