이벤트 만들기 (초보자)
내개만든 객체를 다른 객체에 이벤트를 사용하게 하기 위해서는
이벤트 사용하기
1. 새로운 데이터 타입 생성 [생락가능]
매개 변수가 없는 이벤트를 생성시 기본 생성자 public delegate void EventHandler(object sender, EventArgs e)를 사용하면 됨으로 생략 ,여기서는 minEventHandler라는 새로은 데이터 타입
public delegate void minEventHandler(object sender,minEventTestArgs e);//델리게이트 선언
2. 이벤트 매개 변수를 위한 객체 생성 [생락가능]
1번의 두 번째 매개 변수에 사용하기 위한 객체로서 매개 변수로 넘길 데이터가 없으면 그냥 EventArg를 사용해도 됨.
public class minEventTestArgs : EventArgs
{
public DateTime m_Timer{get;set;}
public minEventTestArgs(DateTime Timer)
{
this.m_Timer = Timer;
}
3. 이벤트 정의 a 1번의 인터페이스
public event minEventHandler minEventTest; // 이벤트 정의
public void OnMinEventTest(minEventTestArgs e) // 이벤트 발생 구독자에게 통보
{
if (minEventTest != null)
minEventTest(this, e);
}
5. 이벤트 핸들러 메소드
minTimer min; //
private void Form1_Load(object sender, EventArgs e)
{
min = new minTimer();
min.minEventTest += new minEventHandler(min_minEventTest);
}
6. 이벤트 구독
Void min_minEventTest(object sender, minEventTestArgs e)
{
textBox1.Text = e.m_Timer.ToLongTimeString();
}
여기서 부터 는 예제
1 minTimer라는 객체를 하나 만들고
이 객체는 1초마다 현재 시간을 알려주는 이벤트를 생성한는일을 함.
2 폼 에서는 minTimer객체 인터페이스를 만들고 이벤트를 구독한다
using System;
namespace WindowsFormsApplication1
{
public delegate void minEventHandler(object sender,minEventTestArgs e); //새로운 객체
{
System.Windows.Forms.Timer timer; //시간을 읽어오는 타이머
public event minEventHandler minEventTest; //[2] 이벤트 정의
public void OnMinEventTest(minEventTestArgs e) //[3] 이벤트 발생 구독자에게 통보
{
if (minEventTest != null)
minEventTest(this, e);
}
//
public minTimer()
{
timer = new System.Windows.Forms.Timer();
timer.Interval = 1000;
timer.Enabled = true;
timer.Start();
timer.Tick += new EventHandler(timer_Tick);
}
//
void timer_Tick(object sender, EventArgs e)
{
DateTime curTime = DateTime.Now;
minEventTestArgs args = new minEventTestArgs(curTime);
OnMinEventTest(args);
}
}
// [1] 이벤트 인자를 위한 객체
public class minEventTestArgs : EventArgs
{
public DateTime m_Timer{get;set;}
public minEventTestArgs(DateTime Timer)
{
this.m_Timer = Timer;
}
}
}
폼에서
minTimer min; //
private void Form1_Load(object sender, EventArgs e)
{
min = new minTimer();
min.minEventTest += new EventHandler(min_minEventTest);
}
void min_minEventTest(object sender, minEventTestArgs e)
{
textBox1.Text = e.m_Timer.ToLongTimeString();
}
잘못된부분 있으면 정보 공유 차원에서라도
답글 부탁 합니다,
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1831&page=4
'Programming > C#' 카테고리의 다른 글
interface(C# 참조) (0) | 2010.09.14 |
---|---|
abstract(C# 참조) (0) | 2010.09.14 |
STL map == C# Dictionary (0) | 2010.09.13 |
자동 업데이트 프로그램 (1) | 2010.09.10 |
간단한 자동 업데이트 프로그램 구현 (0) | 2010.09.10 |