2010-06-28 2 views
1

내 응용 프로그램에 Winform이 있습니다. 양식에는 라디오 버튼 ...부터 텍스트 상자, 단추, 확인란 등 많은 컨트롤 이 포함되어 있습니다. 라이센스 모드 유형에 따라 특정 옵션을 표시하거나 숨기거나 활성화 또는 비활성화해야한다는 요구 사항 중 하나입니다. applcation 두 가지 라이센스 모드가 말 exmample에 대한UI 디자인 질문 - 컨트롤 숨기기 및 표시

: 1) 정상 2) 일반 모드에서

고급 단지 몇 가지 컨트롤을 표시 할 필요는 3 텍스트 상자와 2 개 버튼을 말한다. 및 일부 확인란이 고급 모드 인 경우

모든 항목을 표시해야하며 일부 체크 박스 만 편집 할 수 있어야합니다.

현재 코드에서 직접 수행했습니다 ... 나는 더 많은 컨트롤이 추가/제거되거나 고급 모드와 거즈로 만들어 질 것이라고 확신합니다!

간단한 방법으로 활성화 및 비활성화를 디자인 할 수 있습니까? XML 파일을 기반으로 컨트롤 목록을 비활성화하거나 활성화해야합니다. ?

디자인에 대한 도움이 상당 할 것입니다.

답변

0

확장 속성 공급자를 추가하려는 경우 IDE 속성 패널에 나타나는 새로운 의사 속성을 설정하기 만하면됩니다.

비슷한 예 (역할 기반 검사에 "principal"사용) is shown here.

그러나 프로그래밍 지식이있는 사람이라면 누구든지 간단하게 무시할 수 있습니다.

0

일반 (일반)과 고급 (고급)과 같은 두 블록을 사용하면 전체 블록 만 숨길 수 있습니다. 같은 뭔가가 :

+ Normal options ----------------------------+ 
| () check this to ..      | 
| Name: [     ]    | 
+--------------------------------------------+ 

+ Advanced options --------------------------+ 
| IP: [    ]      | 
| Host: [     ]    | 
| Mode: () ...        | 
|  () ...        | 
+--------------------------------------------+ 
1

당신은 UI를위한 컨트롤러를 사용하는 경우 '표시/숨기기'로직 컨트롤러 (는 비즈니스 규칙이다)에 보관해야합니다. 컨트롤러에서 'CanCurrentUserSeeEditButton'과 같은 속성을 사용하여 컨트롤이 표시되어야하는지 여부를 결정한 다음 UI에서 데이터 바인딩을 사용하여 컨트롤 'Visible'또는 'Enabled'속성을 설정하여 컨트롤러 논리에 바인딩합니다 (INotifyPropertyChanged 모든 컨트롤러 속성에 대해 구현됩니다.

이것은 UI없이 활성화 또는 표시되는 로직을 단위 테스트 할 수 있음을 의미합니다.

이 기능은 새 컨트롤 추가를 자동화하는 데 도움이되지 않지만 새로운 컨트롤 각각에 필요한 것이 무엇인지 추적하기 쉽습니다.

0

모범 사례인지 확실하지 않지만 모드 수가 너무 많지 않은 경우 (예 : 3 또는 4) 여러 사용자 정의 컨트롤을 만든 다음 필요시 동적으로 직접 기본 폼에 붙여 넣을 수 있습니다.

이 방법은 매우 편리합니다. 나중에 모든 변경 사항을 별도의 컨트롤에서 쉽게 유지 관리 할 수 ​​있습니다. 유일한 문제는 컨트롤을로드 할 때 데이터를 전송하는 것이지만 몇 가지 추가 속성이나 메서드로도 해결할 수 있습니다.