[실행 시간] 2025.11.06 - 2025.11.07
[학습 내용]
1. Timer 객체를 사용한 객체 자동 생성 기능

Timer 객체를 생성하여 원하는 간격으로,
간격마다 실행되는 이벤트를 설정하여 타이머 객체를 시작하도록 설계
2. [타이머 기능] 외부 서비스 분리
Timer.cs 클래스를 생성하여
타이머 시작/정지 등 타이머와 관련된 기능만 따로 관리할 수 있도록 분리

메인 View에서 [시작]버튼을 누르면
Timers 클래스의 TimerStart 함수가 실행.
TimerStart는 OnStudentTimer함수 실행.
OnStudentTimer는 timer 설정값 세팅 후 타이머 시작
해당 타이머의 Tick은 timer_Tick 함수 실행
timer_Tick은 timerD 델리게이트로 invoke를 일으킴
timerD를 구독한 함수는 MainForm.CreateStudent


CreateStudent 함수는 기존에 객체를 직접 생성했으나
객체 생성 기능도 외부 서비스로 분리하여 호출하는 것으로 변경함
함수결과값을 객체형태로 리턴받아 객체의 값을 UI에 띄움.
3. DataTable과 DataGridView의 상관관계
DataTable은 DB를 조회할 때 자주 사용하는 데이터 타입
DataGridView는 DataTable의 데이터를 시각화하는 도구

4. [조회 기능] 외부 서비스 분리
기존에 메인 View에 모든 기능이 정의되어 있었으나
Lookup.cs 클래스를 생성하여 선택한 셀의 학생 정보를 조회하는 기능 분리
> 조회 버튼을 누르면 팝업 View가 팝업됨.
기존:

현재 셀의 행이 몇번 인덱스인지 저장
해당 값으로 Value 파싱하여 변수에 저장
저장한 변수를 static 변수에 저장
팝업 View 인스턴스 활성화
View 팝업

팝업 View 생성자에 있는 메인 View의 static 변수를 UI에 갱신한 뒤 생성
변경:

선택한 셀의 데이터를 저장하는 기능을 분리 (GetSelectedStudent)
팝업 View에 객체만 전달하고 인스턴스 생성

팝업 View 생성자에 넘겨받은 객체 저장
저장 후 refreshUi 함수 호출

넘겨받은 객체로 UI 갱신
>> 데이터를 무조건 직접 넘겨주면 안된다고 생각했는데
초기에 한번은 데이터를 넘겨주는 것은 필요하고,
그것을 객체로 넘겨주면 객체를 활용하면 되니까 훨씬 간단하다고 느꼈습니다.
'C#' 카테고리의 다른 글
| C# 비동기 프로그래밍 - async/await (0) | 2025.11.12 |
|---|---|
| 허니웰 바코드 통신 (C# Winform) - Honeywell Xenon 1950 (0) | 2025.11.11 |
| 과제 요구사항 분석 (0) | 2025.11.06 |
| 이벤트 핸들러 학습 후 응용한 예제 (0) | 2025.11.06 |
| 이벤트 핸들러 학습 예제 (0) | 2025.11.06 |