0

这些是陈述

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?我可以看到两个具有此名称的功能,但是没有()的函数,但是函数调用中没有什么?还有为什么它们前面有&?如果它们的返回类型为 void,它们如何用作参数?

在这两行中,为什么使用 += 而不仅仅是 =?如果使用 = 会发生什么?

4

1 回答 1

1

这些行订阅事件。例如,SizeChanged是一个事件,SizeChangedEventHandler是一个委托类型(类似于函数指针,但也包含对类实例的引用)并且MainPage_SizeChanged是一个事件处理程序。

没有(),因为它不是函数调用MainPage_SizeChanged执行该行时不会调用该函数,每次SizeChanged引发事件时都会执行该函数。之所以使用,&是因为这就是在 C++ 中创建函数指针的方式。

如果您使用=而不是+=,您的代码将无法编译。您不能设置事件,只能订阅(使用+=)和取消订阅(-=)。

于 2013-03-16T15:31:07.267 回答