[카테고리:] <span>Windows Forms 응용</span>

이제 작성한 ColorSelectorControl을 사용하는 Form1 을 구현합시다. 먼저 자식 컨트롤을 배치하세요.

[그림 3.6] Form1 자식 컨트롤 배치

 위쪽에 ColorSelector 컨트롤을 배치하고 아래쪽에 변경할 때 사용할 컨트롤들을 배치하세요.

NoName컨트롤 형식설명
1colorselColorSelectorControl색상 변경 사용자 정의 컨트롤
2tbox_redTextBoxRed 색상 정보 표시 및 입력
3btn_redButtonRed 색상 변경
4tbox_greenTextBoxGreen 색상 정보 표시 및 입력
5btn_greenButtonGreen 색상 변경
6tbox_blueTextBoxBlue 색상 정보 표시 및 입력
7btn_blueButtonBlue 색상 변경
8btn_allButton전체 색상 변경

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);
        }
    }
}

Windows Forms 응용