【发布时间】:2009-08-29 11:17:27
【问题描述】:
我在用户控件中添加了一个事件,我在用户控件的消费者窗口中调用了该事件,
我的问题是:当我们通过 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);
感谢那些对问题陈述有点困惑的人。我希望这现在说清楚了(就像我在找到解决方案之前无法解释问题一样:)
【问题讨论】: