我已向用户控件添加了一个事件,并在用户控件的使用者窗口中调用该事件,
我的问题是:当我们通过IDE分配事件处理程序时,编译器会生成什么代码?
这样我也可以使用类似的东西自动在运行时编写事件处理程序。
我知道我们可以写一个事件处理程序,例如我在这里写的事件处理程序:
SearchControl.SearchChangedEvent += new RoutedEventHandler(SearchControl_SearchChanged);
在这种情况下抛出的错误是没有重载匹配,所以我尝试做与编译器通过代码完成相同的事情。编译器如何自动知道参数?
编辑:解决方案。
我在本文中找到了令我感到困惑的地方:http://msdn.microsoft.com/hi-in/magazine/cc785480%28en-us%29.aspx
在“路由事件概述”部分中,作者写道:
要查看此内容,请转到构造函数 你的班级,右击鼠标 InitializeComponent方法调用,和 从中选择转到定义 上下文菜单。编辑器将显示一个 生成的代码文件(带命名 .i.g.cs或.i.g.vb的惯例) 包含正常的代码 在编译时生成。
我发现后面生成的代码!!
#line 6 "..\..\Window1.xaml"
this.myButton.Click +=
new System.Windows.RoutedEventHandler(
this.myButton_Click);
谢谢,对于那些对问题陈述有点困惑的人。我希望现在能说清楚了(在我找到解决方案之前,我就无法解释问题了)。
答案 0 :(得分:0)
您已将SearchControl_SearchChanged
函数作为参数传递给委托RoutedEventHandler
,完整地描述了您的object
函数。从MSDN开始,代理人获取2个参数,RoutedEventArgs
和void
,并返回SearchControl_SearchChanged
。这就是IDE用于自动为您构建{{1}}函数头的内容。