이벤트는 그 이름처럼 이벤트를 처리할 때
사용하는 것으로 델리게이트와 조합하여 사용합니다.
http://cppcli.shacknet.nu/cli:event
보통 이벤트를 설명할 때 button 클래스를 예제로 사용하므로 저도 이것을 사용하여 간단하게 설명하겠습니다.^^
button 클래스의 여러 이벤트 중 clicked 이벤트를
구현할 때 이벤트로 불러질 클라이언트는 OnClick()이라는 멤버함수를 정의한 후 이것을 button 클래스의 clicked에 등록합니다.
delegate void ClickHandler();
ref class button {public:
event ClickHandler^ Clicked; button() { btnForTest = this; }public:
void someoneclicked() { Clicked(); } static button^ btnForTest;};
ref class Client {private:
button^ btn;public:
Client() { btn = gcnew button; btn->Clicked += gcnew ClickHandler(this, &Client::OnClick); }private:
void OnClick() { Console::WriteLine("someone clicked."); }};
int main()
{
Client^ client = gcnew Client;
button::btnForTest->someoneclicked();
return 0;
}
< 출처 : http://cppcli.shacknet.nu/cli:event > event는 몇 개의 제약이 있습니다.
1. Clicked 호출은 button 밖에 할 수 없습니다.
2. 클라이언트가 Clicked에 대한 조작은 +=와 -=만 할 수 있으며 Clicked()나 Clicked = nullptr 같은
것은 할 수 없습니다.
참고http://cppcli.shacknet.nu/cli:event
'C++/CLI' 카테고리의 다른 글
| [Step. 12] for each (1) | 2010.09.03 |
|---|---|
| [Step. 11] 열거형( enum ) (2) | 2010.08.27 |
| [Step. 09] 델리게이트 (delegate) (2) | 2010.08.12 |
| [Step. 08] 프로퍼티 ( property ) (8) | 2010.08.06 |
| [Step. 07] 비관리 클래스에서 관리 클래스를 멤버로, 관리 클래스에서 비관리 클래스를 멤버로 (0) | 2010.07.30 |

