这些是陈述
this->SizeChanged += ref new SizeChangedEventHandler(this, &MainPage::MainPage_SizeChanged);
Scenarios->SelectionChanged += ref new SelectionChangedEventHandler(this, &MainPage::Scenarios_SelectionChanged);
//These lines were in MainPage Constructor.
//Scenarios is the name of a ListBox
这两条线做了什么?
什么是MainPage::MainPage_SizeChanged
和MainPage::Scenarios_SelectionChanged
?
我可以看到有两个具有此名称的函数,但是函数调用中没有()
吗?
也为什么他们之前是&?
如果返回类型无效,它们如何用作参数?
在这两行中,为什么+ =使用而不仅仅是=?如果使用=会发生什么?
答案 0 :(得分:1)
这些行正在订阅活动。例如,SizeChanged
是一个事件,SizeChangedEventHandler
是一个委托类型(类似于函数指针,但也包含对类实例的引用),MainPage_SizeChanged
是一个事件处理程序。
没有()
,因为它不是函数调用。执行该行时不会调用函数MainPage_SizeChanged
,每次引发SizeChanged
事件时都会执行该函数。并使用&
,因为这是在C ++中创建函数指针的方式。
如果您使用=
而不是+=
,则代码将无法编译。您无法设置事件,您只能订阅(使用+=
)并取消订阅(-=
)。