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

먼저 Windows Forms 응용 프로그램을 만드세요. 그리고 ColorChangeEventArgs 클래스를 추가하세요.

먼저 대리자 COLOR_ELEM을 정의하세요. COLOR_ELEM에는 RED, GREEN, BLUE, 전체 색상을 구분하기 위한 값들을 열거합니다.

public enum COLOR_ELEM
{
    CE_RED, CE_GREEN, CE_BLUE, CE_ALL    
}

이벤트의 인자는 EventArgs의 파생 클래스로 작성하는 것을 권장합니다.

public class ColorChangeEventArgs:EventArgs
{

이벤트의 인자는 이벤트 핸들러에서 사용할 인자들을 속성으로 제공하여 편의성을 높여줍니다. 여기에서는 Red,Green,Blue, Color, 변경한 색상을 제공합시다.

public int Red
{
    get;
    private set;
}
public int Green
{
    get;
    private set;
}
public int Blue
{
    get;
    private set;
}
public Color Color
{
    get
    {
        return Color.FromArgb(Red, Green, Blue);
    }
}
public COLOR_ELEM ChangeElem
{
    get;
    private set;
}

생성자에서는 필요한 인자(색상, 변경한 색)를 전달받아 속성을 설정합니다.

public ColorChangeEventArgs(int r, int g, int b, COLOR_ELEM ce)
{
    Red = r;
    Green = g;
    Blue = b;
    ChangeElem = ce;
}

그리고 이벤트 핸들러 ColorChangeEventHandler를 대리자로 정의합니다. 대부분의 이벤트 핸들러는 첫번째 인자는 이벤트를 발생한 개체를 전달하고 두번째 인자는 이벤트 핸들러에서 필요한 이벤트 인자를 전달하게 구현합니다.

public delegate void ColorChangeEventHandler(object sender, ColorChangeEventArgs e);

▷ColorChangeEventArgs.cs

using System;
using System.Drawing;
namespace Ex_사용자_정의_컨트롤
{
    public enum COLOR_ELEM
    {
        CE_RED, CE_GREEN, CE_BLUE, CE_ALL
    }
    public class ColorChangeEventArgs:EventArgs
    {
        public int Red
        {
            get;
            private set;
        }
        public int Green
        {
            get;
            private set;
        }
        public int Blue
        {
            get;
            private set;
        }
        public Color Color
        {
            get
            {
                return Color.FromArgb(Red, Green, Blue);
            }
        }
        public COLOR_ELEM ChangeElem
        {
            get;
            private set;
        }
        public ColorChangeEventArgs(int r, int g, int b, COLOR_ELEM ce)
        {
            Red = r;
            Green = g;
            Blue = b;
            ChangeElem = ce;
        }
    }
    public delegate void ColorChangeEventHandler(object sender, ColorChangeEventArgs e);
}

Windows Forms 응용