본문 바로가기
C#/윈폼

이벤트

by hoshi03 2024. 9. 21.

지금까지 ui배치 후 더블클릭 등으로 이벤트를 등록해서 사용했는데

어떻게 이렇게 한 것 만으로 되는지 자세하게 알아보자

 

버튼의 클릭 이벤트를 처리할때 click 속성은 이벤트 핸들러 이고, 이벤트 핸들러는 델리게이트 타입이다.

그러므로 델리게이트 문법을 사용해서 해당 동작을 할때 발생시킬 메서드를 등록할 수 있다

 

기존 델리게이트 문법보다 훨씬 편하게

클릭 동작할때 얘도 실행해줘 하는 형태로 전달해주면 아래와 같은 경우에는 btn1이 뜬 후 확인하면 clicked2도 팝업된다

 

- 이벤트 핸들러 원형

void 타입이기에 전달해주는 메서드 또한 void 타입으로 전달해줘야 한다.. 그렇지 않으면 당연히 빨간줄뜸

public delegate void EventHandler(object sender, EventArgs e);

 

버튼1을 클릭하면 사용자가 정의한 메서드인 button1_Click2도 실행되게 만들어주었다

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("btn1");
        }

        private void button1_Click2(object sender, EventArgs e)
        {
            MessageBox.Show("btn1_clicked2");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Click += new System.EventHandler(button1_Click2);
        }