사용자 정의 이벤트 만들기
.NET Framework 이 발생시키는 시스템 이벤트와는 별도로 사용자가 직접 이벤트를 정의하여 사용할 수 있다. 사용 목적은 여러가지 있겠으나 데이터 교환의 목적으로 사용 되기도 한다.
즉, 두 폼간의 데이터 전달 또는 폼과 클래스 라이브러리(DLL)간 데이터 교환에 이벤트가 이용된다.
form1 과 form2 간의 사용자 정의 이벤트 만들기를 예로 들어본다.
form2에서 이벤트를 발생 시키고 데이터를 form1으로 보내는 예이다.
이벤트를 발생 시키는 form2 의 코드는 다음과 같다.
1. delegate 를 이용하여 이벤트를 정의한다.
정의할 이벤트가 사용할 이벤트 핸들러의 리턴값 및 인수를 정의해 준다.
2. 이벤트 선언
사용할 이벤트를 선언해 준다.
3. 이벤트 호출
이벤트를 호출 할 특정 위치에서 이벤트를 호출한다. 이벤트에 전달할 인수를 맞쳐준다.
이벤트를 받는 쪽 즉, form1의 코드는 대략 다음과 같다.
form2 의 객체를 생성한다.
form2 에서 선언한 이벤트에 이벤트 핸들러를 추가 시킨다.
이벤트 핸들러를 추가 시키는 함수는 (여기서 EventHandler) form2 에서 정의한 이벤트 선언이다.
원래대로 쓰자면 form2 의 네임스페이스.클래스이름.EventHandler 로 써줘야 한다.
여기서 OnReceiveMsg 메소드를 연결시켜 주었는데 메소드의 선언 형식이 form2 에서 정의한 이벤트 핸들러 형식과 일치해야한다.
.NET Framework 이 발생시키는 시스템 이벤트와는 별도로 사용자가 직접 이벤트를 정의하여 사용할 수 있다. 사용 목적은 여러가지 있겠으나 데이터 교환의 목적으로 사용 되기도 한다.
즉, 두 폼간의 데이터 전달 또는 폼과 클래스 라이브러리(DLL)간 데이터 교환에 이벤트가 이용된다.
form1 과 form2 간의 사용자 정의 이벤트 만들기를 예로 들어본다.
form2에서 이벤트를 발생 시키고 데이터를 form1으로 보내는 예이다.
이벤트를 발생 시키는 form2 의 코드는 다음과 같다.
// 이벤트 정의 public delegate void EventHandler(object sender, EventArgs e); public partial class form2 : Form { // 이벤트 선언 public event EventHandlerHandler eReceiveMsg; public form2() { InitialzeComponent(); } private void button1_Click(object sender, EventArgs e) { // 이벤트 호출 eReceiveMsg(this, e); } }
1. delegate 를 이용하여 이벤트를 정의한다.
정의할 이벤트가 사용할 이벤트 핸들러의 리턴값 및 인수를 정의해 준다.
2. 이벤트 선언
사용할 이벤트를 선언해 준다.
3. 이벤트 호출
이벤트를 호출 할 특정 위치에서 이벤트를 호출한다. 이벤트에 전달할 인수를 맞쳐준다.
이벤트를 받는 쪽 즉, form1의 코드는 대략 다음과 같다.
Form frm2 = new Form2(this); frm2.eReceiveMsg += new EventHandler(OnReceiveMsg); frm2.Show(); private void OnReceiveMsg(object sender, EventArgs e) { SetMsgTextBox("JJ"); } public void SetMsgTextBox(string strSetText) { MessageBox.Show(strSetText); }form1 에서 form2 의 객체를 참조 시키고
form2 의 객체를 생성한다.
form2 에서 선언한 이벤트에 이벤트 핸들러를 추가 시킨다.
이벤트 핸들러를 추가 시키는 함수는 (여기서 EventHandler) form2 에서 정의한 이벤트 선언이다.
원래대로 쓰자면 form2 의 네임스페이스.클래스이름.EventHandler 로 써줘야 한다.
여기서 OnReceiveMsg 메소드를 연결시켜 주었는데 메소드의 선언 형식이 form2 에서 정의한 이벤트 핸들러 형식과 일치해야한다.