C# 델리게이트를 이용한 이벤트 생성 (Part-1)

Software/C#|2023. 2. 4. 10:31
반응형

객체 내에서 발생하는 어떤 사건에 대해 이벤트를 발생시키는 코드를 만들기 위해 인터넷을 검색해 봤는데 하나같이 뭔가 2% 부족한 부분이 있는것 같아서 이참에 간단한 예제를 하나 만들어 보았습니다. 

 

part-1에서는 MyText 라는 객체를 생성하고 객체의 Text 가 변경되면 이벤트가 발생하는 형식으로 예제를 구성했습니다.

 

아래는 MyText 라는 클래스입니다.

public class MyText
{
    public delegate void EventHandler(object sender, EventArgs e);  // 이벤트 발생을 위한 함수 형식의 델리게이트 선언

    private string text = "";
    public string Text
    {
        get { return text; }
        set
        {
            text = value;
            if(OnTextChangedHandler != null)
            {
                OnTextChangedHandler(this, new EventArgs());  // Text 가 변경될 경우 이벤트 함수 실행
            }
        }
    }

    public event EventHandler? OnTextChangedHandler = null;  // 이벤트 함수 핸들러 선언
}


이제 위의 클래스를 이용해서 실제 이벤트를 발생시키는 코드를 만들어 봅니다. 

폼에 버튼 하나와 TextBox 하나를 올려 놓고 테스트를 해 보았습니다. 

    public partial class Form1 : Form
    {
        MyText myText = new MyText();   // MyText 의 객체를 생성한다. 
        public Form1()
        {
            InitializeComponent();

            myText.OnTextChangedHandler += text_Changed;  // 객체내의 Text가 변경되었을 때 수행할 이벤트 함수를 등록한다.
        }

        private void text_Changed(object sender, EventArgs e) // 이벤트 함수 구현 부분
        {
            textBox1.Text = myText.Text;   // MyText 객체의 Text를 TextBox 에 쓴다.
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myText.Text = "test";  // 버튼을 클릭하면 MyText 객체의 Text를 변경한다.
        }
    }

 

 

반응형

댓글()