일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JSON
- C# MDB Handle
- 시
- TDD
- MDB Select
- MVC
- 공공 데이터 포털
- eventargs
- eventhandler
- 버스 API
- c#
- 객체지향
- Winform
- Excel Cell Format
- 경기도 버스정보시스템
- GDI+
- DrawRectangle
- C# MDB
- WPF
- NUnit
- Cell Border Style
- MDB Connect
- C# 파일 암/복호화
- delegate
- 디자인 패턴
- sqlite3
- Json.NET
- 경기도 버스
- solid
- DrawEllipse
- Today
- Total
White Whale Studio
EventArgs 본문
Delegate에 대한 내용을 찾다가 Event를 찾게되고;;; 좀더 상세하게 파보다보니 여기까지왔네요.
관련된 내용부터 해서 최종적으로는 Delegate와 Event를 알아보겠습니다.
EventArgs (Event Arguments) : 이벤트에 사용되는 데이터를 저장하기 위해 참조하는 기본 클래스입니다.
MSDN의 설명을 보면
이 클래스에는 이벤트 데이터가 없으므로 이벤트가 발생할 때 이벤트 처리기에 대한 상태 정보를 전달하지 않는 이벤트에서 사용됩니다. 이벤트 처리기에 상태 정보가 필요한 경우, 응용 프로그램에서는 이 클래스에서 클래스를 파생시켜 해당 데이터를 보관해야 합니다.
This class contains no event data; it is used by events that do not pass state information to an event handler when an event is raised.
즉, Base가 되는 EventArgs에는 이벤트 데이터가 없고, 필요에 따라서 추가 데이터를 전달할 필요가 있다면 EventArgs를 상속해서 만들어 사용하면 된다는 이야기입니다. 빨간 글씨부분을 주목해주세요.
1 2 3 4 5 6 7 8 | /// <summary> /// 이벤트 매개인자로 사용하기 위한 클래스 /// </summary> public class MyEventArgs : EventArgs { public int intParam { get; set; } public String stringParam { get; set; } } |
위에서는 간단하게 작성을 해보았습니다.
MyEventArgs 클래스는 EventArgs를 상속받고 Property를 사용하여 추가적인 이벤트 데이터를 설정하였습니다.
말하자면 intParam과 stringParam가 이벤트 데이터 인것입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class EventClass { public delegate void MyEventHandler(int a, int b, MyEventArgs mea); public event MyEventHandler someEvent; public event EventHandler normalEvent; public void RaiseEvent() { try { if (someEvent != null) { MyEventArgs mea = new MyEventArgs(); mea.intParam = 3; mea.stringParam = "Test"; normalEvent(this, mea); } } catch (Exception ex) { Console.WriteLine(ex.Message.ToString()); } } } | cs |
실사용 예를 볼까요.
4번 라인에서 처럼 delegate로 EventHandler를 만들어서 직접 설정해주는 방법이 있고
일반적인 event를 선언해서 바로 넘기는 방법도 있습니다.(17번 라인)
어차피 MyEventArgs가 Base인 EventArgs를 상속받으니까 당연히 가능한 거겠죠?
위의 코드에 나온 Delegate나 Event에 관한 이야기는 한꺼번에 하기에는 많은 내용이라
포스팅을 나누어서 진행하겠습니다.
'IT Engineering > C#.net' 카테고리의 다른 글
Delegate & Event / 델리게이트와 이벤트 (0) | 2016.06.23 |
---|---|
Delegate / 대리자 (0) | 2016.06.23 |
StyleCop - Coding Guide / 스타일콥 코드 분석기 for C# (0) | 2016.06.22 |
[MVC Pattern] Winform 예제 (1) | 2016.06.21 |
[MVC Pattern] 개념 정리 (2) | 2016.06.21 |