프로젝트에 VerifyForm을 추가하고 자식 컨트롤을 배치합니다. VerifyForm에는 도서 목록을 항목으로 표시하는 ComboBox 컨트롤과 선택한 도서의 정보를 표시할 컨트롤로 PictureBox 컨트롤, DateTimePicker 컨트롤 TextBox 컨트롤을 배치합니다.
No | Name | 컨트롤 형식 | 설명 |
1 | cbox_no | ComboBox | 도서 목록 |
2 | tbox_title | TextBox | 도서 제목(ReadOnly:True) |
3 | tbox_description | TextBox | 설명(ReadOnly:True) |
4 | pb_image | PictureBox | 이미지(SizeMode: StretchImage) |
5 | dtp_date | DateTimePicker | 날짜 선택 및 표시 |
디폴트 이미지 파일명을 상수로 정의하세요.
const string def_imagename = @"Resources\default.jpg";
이미지 이름 멤버를 선언하고 디폴트 이미지 이름으로 초기화합니다.
string imagename = def_imagename;
도서 관리자 단일체를 사용하기 편하게 속성을 정의합니다. 가져오기에서는 BookManager 클래스의 정적 멤버 BM을 그대로 By Pass 합니다.
BookManager BM { get { return BookManager.BM; } }
VerifyForm의 Load 이벤트 핸들러를 등록합니다.
private void ModifyForm_Load(object sender, EventArgs e) {
pb_image의 ImageLocation 속성을 디폴트 이미지 파일명으로 설정합니다.
pb_image.ImageLocation = def_imagename;
도서 관리자 개체에게 도서 목록을 요청하여 도서 목록을 ComboBox 컨트롤에 항목 추가합니다.
List<BookStory> bsl = BM.GetBSCollection(); foreach (BookStory bs in bsl) { cbox_no.Items.Add(bs); }
도서 추가 이벤트 핸들러를 도서 관리자에 등록합니다.
BM.OnAddBS += BM_OnAddBS; } private void BM_OnAddBS(object sender, AddEventArgs e) {
도서 추가 이벤트 핸들러에서는 이벤트 인자의 도서 개체를 ComboBox 항목에 추가합니다.
cbox_no.Items.Add(e.BS); }
ComboBox 컨트롤의 SelectedIndexChanged 이벤트 핸들러를 등록합니다.
private void cbox_no_SelectedIndexChanged(object sender, EventArgs e) {
선택 항목이 없으면 이벤트 핸들러를 종료합니다.
if(cbox_no.SelectedIndex == -1) { return; }
선택 항목을 도서 개체로 참조한 후에 컨트롤 속성을 설정합니다.
BookStory bs = cbox_no.SelectedItem as BookStory; tbox_title.Text = bs.Title; tbox_description.Text = bs.Description; pb_image.ImageLocation = bs.ImageName; dtp_date.Value = bs.DT; }
▷ VerifyForm.cs
//VerifyForm.cs using System; using System.Collections.Generic; using System.Windows.Forms; namespace MyReadingStory { public partial class VerifyForm : Form { BookManager BM { get { return BookManager.BM; } } const string def_imagename = @"Resources\default.jpg"; string imagename = def_imagename; public VerifyForm() { InitializeComponent(); } private void VerifyForm_Load(object sender, EventArgs e) { pb_image.ImageLocation = def_imagename; List<BookStory> bsl = BM.GetBSCollection(); foreach (BookStory bs in bsl) { cbox_no.Items.Add(bs); } BM.OnAddBS += BM_OnAddBS; } private void BM_OnAddBS(object sender, AddEventArgs e) { cbox_no.Items.Add(e.BS); } private void cbox_no_SelectedIndexChanged(object sender, EventArgs e) { if(cbox_no.SelectedIndex == -1) { return; } BookStory bs = cbox_no.SelectedItem as BookStory; tbox_title.Text = bs.Title; tbox_description.Text = bs.Description; pb_image.ImageLocation = bs.ImageName; dtp_date.Value = bs.DT; } } }