4) ProjectInfoControl

이번에는 평가 프로젝트의 기본 정보를 표시하는 사용자 정의 컨트롤을 만듭시다. 프로젝트에 ProjectInfoControl 이름의 사용자 정의 컨트롤을 추가하고 자식 컨트롤을 배치하세요. 자식 컨트롤로 프로젝트 제목, 전체 UI 개수, 이름이 없는 UI 요소 개수를 표시할 Label 컨트롤을 배치합니다. 평가 프로젝트를 저장하거나 끝내기, 저장하고 끝내기를 수행할 수 있는 버튼 컨트롤을 배치합니다. 그리고 컨트롤 종류 별 UI 요소 개수와 Access 키 목록과 Accelerator 키 목록을 항목으로 표시할 ListView 컨트롤을 배치합니다.

[그림 10.12] ProjectInfoControl 자식 컨트롤 배치
[그림 10.12] ProjectInfoControl 자식 컨트롤 배치
번호 컨트롤 형식 컨트롤 이름 특이 사항
1 Label lb_title  
2 Label lb_ui_cnt  
3 Label lb_noname_cnt  
4 ListView lv_control View 속성을 Details로 설정
5 Button btn_save Visible 속성을 False로 설정
6 Button btn_end  
7 Button btn_save_end  
8 ListView lv_accesskey View 속성을 Details로 설정
9 ListView lv_acceleratorkey View 속성을 Details로 설정

[표 10.4] ProcessInfoControl의 자식 컨트롤

접근성 평가 프로젝트 개체를 위한 멤버 필드를 선언합니다.

생성자는 접근성 평가 프로젝트 개체를 입력 인자로 받게 수정하고 입력 인자로 받은 개체로 멤버 필드에 대입합니다.

컨트롤의 Load 이벤트 핸들러를 등록하세요.

평가 제목을 화면에 표시합니다.

전체 UI 개수와 이름 없는 UI 개수도 화면에 표시합니다.

세 개의 리스트 뷰의 항목을 추가합니다. 각 리스트 뷰의 항목을 추가하는 메서드는 별도로 만들어서 사용합시다.

리스트 뷰의 아이템 항목을 모두 지웁니다.

컨트롤 패턴 열거형을 이용하여 각각의 컨트롤 유형별로 개수를 파악합니다.

파악한 컨트롤 개수와 컨트롤 패턴 이름으로 ListViewItem 개체를 만들어 항목에 추가합니다.

리스트 뷰의 모든 항목을 지웁니다.

평가 프로젝트 개체에게 Access 키 목록을 요청합니다.

Access 키 목록을 리스트 뷰 항목에 추가합니다.

리스트 뷰의 모든 항목을 지웁니다.

평가 프로젝트 개체에게 Accelerator 키 목록을 요청합니다.

Accelerator 키 목록을 리스트 뷰 항목에 추가합니다.

저장하기 버튼 클릭 이벤트 핸들러를 등록합니다. 저장하는 기능은 저장하고 끝내기 버튼을 클릭했을 때도 수행해야 하므로 Save 메서드를 만들어서 이를 호출합니다.

저장할 폴더를 선택하기 위해 폴더 브라우저 대화상자를 생성하여 띄웁니다.

평가 프로젝트 개체의 Save 메서드에 선택한 폴더를 입력 인자로 전달합니다.

끝내기 버튼 클릭 이벤트 핸들러를 등록하고 EndProject 메서드를 만들어서 이를 호출합니다.

평가 프로젝트 개체의 End 메서드를 호출합니다.

그리고 컨트롤의 Dispose 메서드를 호출하여 자원을 반납합니다.

저장하고 끝내기 버튼의 클릭 이벤트 핸들러를 등록합니다.

Save 메서드를 호출하고 성공하면 프로젝트를 종료합니다.

 

[소스 10.12] ProjectInfoControl.cs