이벤트는 그 이름처럼 이벤트를 처리할 때
사용하는 것으로 델리게이트와 조합하여 사용합니다.
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 |