(C#교육동영상)C# 이벤트(Event),이벤트 발생시 데이터 넘기기, EventArgs, add, remove를 통한 이벤트생성, C#학원, 자바학원, WPF학원, 스프링학원
https://www.youtube.com/watch?v=p9H3cDRjS7M&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=17

https://www.youtube.com/watch?v=-5Wq51be-nc&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=20

https://www.youtube.com/watch?v=tw6SakvHTtA&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=21
http://ojc.asia/bbs/board.php?bo_table=LecCsharp&wr_id=412
ojc.asia

이벤트(Event)
이벤트 발생시 데이터 넘기기
add, remove를 통한 이벤트 작성
이번에는 이벤트가 발생할 때 데이터를 넘기는 예제를 작성해 보자.
일반적으로 이벤트가 발생할 때 전달 해야하는 데이터가 존재한다. 마우스를 클릭한다면 어떤 버튼이 몇번 눌러졌는지 등, 이러한 경우 EventArgs를 상속받아서 넘길 데이터를 구현해 주면 된다.
namespace EventTest
{
//이벤트 발생시 넘길 데이터(System.EventArgs 에서 파생)
class EventData : System.EventArgs
{
public string myEventData;
public EventData(string myEventData)
{
this.myEventData = myEventData;
}
}
//이벤트 게시자 클래스
class MyButton
{
//public delegate void MyEventHandler();
//이벤트 처리를 위한 델리게이트 정의
public event EventHandler MyClick; //이벤트 정의
public void Do()
{
MyClick?.Invoke(this, new EventData("홍길이")); //이벤트 발생
}
}
//구독자 클래스
class MyButtonClient
{
static void Main(string[] args)
{
MyButton p = new MyButton();
p.MyClick += new EventHandler(doAction);
p.Do();
}
//MyEvent 이벤트가 발생하면 호출되는 메소드
//System.EventHandler 의 기본형태가 매개변수 2 개받고,
//리턴형이 void 형 이므로 같은 형태로 만든다.
static void doAction(object sender, EventArgs e)
{
Console.WriteLine("MyEvent 라는 이벤트 발생...");
String s = ((EventData)e).myEventData;
Console.WriteLine($"이벤트 발생시 넘어온 데이터: {s}");
}
}
}
4.이벤트 생성시 add, remove 사용하기 및 이벤트 호출방법
class Test
{
private EventHandler handler;
//아래 MyEvent 및 MyEvent2는 동일한 동작을 하는 이벤트이다.
// add, remove 접근자를 사용하여 만든 이벤트는 호출시 델리게이트를 통해 가능하며
// add, remove 접근자를 사용하지 않은 이벤트는 이벤트를 직접 호출가능하다.
public event EventHandler MyEvent1
{
add
{
Console.WriteLine("add operation");
handler += value;
}
remove
{
Console.WriteLine("remove operation");
handler -= value;
}
}
public event EventHandler MyEvent2;
// 이벤트 발생시키는 메소드
public void Do()
{
handler?.Invoke(null, null); //이벤트 호출
MyEvent2?.Invoke(null, null);
}
static void Main()
{
Test t = new Test();
// 이벤트에 가입
t.MyEvent1 += new EventHandler(t.DoNothing);
t.MyEvent2 += new EventHandler(t.DoNothing);
t.Do();
t.MyEvent1 -= new EventHandler(t.DoNothing);
t.Do();
}
void DoNothing(object sender, EventArgs e)
{
Console.WriteLine("DoNothing 메소드 호출됨...");
}
}
#이벤트, #시샵이벤트, #닷넷이벤트, #시샵Event, #EventArgs, #이벤트add, #이벤트remove, #닷넷교육, #닷넷학원, #시샵동영상, #시샵교육, 이벤트, 시샵이벤트, 닷넷이벤트, 시샵Event, EventArgs, 이벤트add, 이벤트remove, 닷넷교육, 닷넷학원, 시샵동영상, 시샵교육,