이제 작성한 ColorSelectorControl을 사용하는 Form1 을 구현합시다. 먼저 자식 컨트롤을 배치하세요.
위쪽에 ColorSelector 컨트롤을 배치하고 아래쪽에 변경할 때 사용할 컨트롤들을 배치하세요.
No | Name | 컨트롤 형식 | 설명 |
1 | colorsel | ColorSelectorControl | 색상 변경 사용자 정의 컨트롤 |
2 | tbox_red | TextBox | Red 색상 정보 표시 및 입력 |
3 | btn_red | Button | Red 색상 변경 |
4 | tbox_green | TextBox | Green 색상 정보 표시 및 입력 |
5 | btn_green | Button | Green 색상 변경 |
6 | tbox_blue | TextBox | Blue 색상 정보 표시 및 입력 |
7 | btn_blue | Button | Blue 색상 변경 |
8 | btn_all | Button | 전체 색상 변경 |
ColorSelectorControl 인 colorsel의 ColorChanged 이벤트 핸들러를 등록하세요.
private void colorsel_ColorChanged(object sender, ColorChangeEventArgs e) {
컨트롤의 색상 속성을 이용하여 TextBox의 Text 속성을 설정합니다.
tbox_red.Text = e.Red.ToString(); tbox_green.Text = e.Green.ToString(); tbox_blue.Text = e.Blue.ToString(); }
각 버튼의 클릭 이벤트 핸들러를 등록하여 colorsel 개체의 색상 정보를 변경하는 메서드인 Change___ 메서드를 호출합니다.
private void btn_red_Click(object sender, EventArgs e) { int r = colorsel.Red; int.TryParse(tbox_red.Text, out r); colorsel.ChangeRed(r); }
특별하게 다르게 처리하지도 않으며 바로 이어서 Form1.cs 소스 내용이 있어서 이하 생략할게요.
… 중략 …
▷Form1.cs
using System; using System.Windows.Forms; namespace Ex_사용자_정의_컨트롤 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } void colorsel_ColorChanged(object sender, ColorChangeEventArgs e) { tbox_red.Text = e.Red.ToString(); tbox_green.Text = e.Green.ToString(); tbox_blue.Text = e.Blue.ToString(); } private void btn_red_Click(object sender, EventArgs e) { int r = colorsel.Red; int.TryParse(tbox_red.Text, out r); colorsel.ChangeRed(r); } private void btn_green_Click(object sender, EventArgs e) { int g = colorsel.Green; int.TryParse(tbox_green.Text, out g); colorsel.ChangeGreen(g); } private void btn_blue_Click(object sender, EventArgs e) { int b = colorsel.Blue; int.TryParse(tbox_blue.Text, out b); colorsel.ChangeBlue(b); } private void btn_all_Click(object sender, EventArgs e) { int r = colorsel.Red; int g = colorsel.Green; int b = colorsel.Blue; int.TryParse(tbox_red.Text, out r); int.TryParse(tbox_green.Text, out g); int.TryParse(tbox_blue.Text, out b); colorsel.ChangeColor(r, g, b); } } }