2013-01-15 1 views
1

몇 가지 탭에서 여러 가지 컨트롤을 사용할 수있는 winform이 있습니다. 나는 사용자가 만든 콤보 상자 선택에 따라 이러한 컨트롤 중 일부를 활성화/비활성화 할 논리를 작성 중입니다. frmMain 수있는 친구-선언 된 속성을 통해클래스 또는 인터페이스에서 양식 업데이트

  1. 인터페이스
  2. : 나는 frmMain.vb의 논리를 작성하는 것은 내가 통해 내 양식의 컨트롤에 접근해야하는지 궁금하네요 그래서 가장 좋은 방법은 아니라고 추측하고있다 된 .vb 다른 클래스에 의해 액세스되는 또는

다른

  • 어떤 도움이 환영받을 것입니다!

  • +0

    컨트롤이 폼에 있고 숨기고 표시 할 수있는 콤보 상자도 폼에 있으면 폼에 표시하거나 숨기는 것이 왜 나쁜 습관입니까? 사용자 입력없이 검색되어 비즈니스 로직을 처리하고 컨트롤을 표시하거나 숨기지 않는 한 컨트롤이있는 폼에서 다른 클래스 나 라이브러리로 이동하여 코드를 더 복잡하게 만들 필요가 없습니다. 그 클래스가 폼에 컨트롤을 만들고 있다면 새로운 클래스로 쇼/숨기기 코드를 옮길 곳을 생각할 수있는 유일한 다른 인스턴스입니다. –

    답변

    0

    일반적으로 프런트 엔드 코드를 비즈니스 논리 계층에 연결하여 컨트롤의 사용/사용 안 함을 제어하는 ​​논리가되도록하는 것이 좋습니다. 가능한 경우 함께 사용할 수없는 항목을 기준으로 컨트롤을 그룹화 한 다음 한 번에 모두 사용할 수 없도록 설정하는 루틴을 만들고 disableAddContactInfoArea() 또는 SetAddContactInfoArea(boolean isEnabled)과 같은 이름을 지정합니다. 내 생각에 루틴은 frmMain.vb에 앉을 것입니다. 피할 수있는 한 가지 방법은 각 개별 컨트롤을 다른 클래스에 노출하는 것입니다 (특정 비즈니스 프로세스에 필요한 것이 전부가 아니라면). 그런 다음에도 나중에 루틴을 작성하여 나중에 편집하도록해야합니다 쉽고 덜 복잡한). 가장 중요한 목표는 복잡성을 관리하는 것입니다 (Steve McConnell의 책 Code complete을 확인하십시오. 7 장 참조).

    이상적인 수행해야 정확히 무엇을 할 단지 거기의 frmMain.vb에 몇 public Sub의를하는 것입니다, 다음, 비즈니스 로직 계층 전화를 사용하는 frmMain의 instace에 그 루틴을 가지고있다.

    관련 문제