日期:2014-05-18  浏览次数:20763 次

一道关于.net4.0 的题目,对答案百思不得其解
原题是英文,大概翻译下意思。
用.net4.0 建了一个WPF 应用程序,里面有一个用户控件,这个用户控件包含了一个TextBox控件,名字叫txtInput。控件放在了一个窗口里面,这个用户控件要处理一个text-changed 事件。
有如下2个要求:
1.建立一个叫做Audit_TextChanged的text-changed事件在txtInput控件中;
2.Executes Audit_TextChanged even when specific handlers mark the event as handled(英语不好,翻译怕出歧义)

下面的代码哪些你将要加入到用户控件中:

B. AddHandler(TextBox.TextChangeEvent,new RouteEventHandler(Audit_TextChanged),true);
C. EventManageer.RegisterClassHander(typeof(TextBox),TextBox.TextChangedEvent,new RoutedEventHandler(Audit_TextChanged),true);

我在msdn上查了半天,这2个方法好像可以实现题目的要求,但是正确答案是B。求高人解答。

------解决方案--------------------
找了下原题,第一条是
Creates a text-changed event handler named Audit_TextChanged for the txtInput control.
那么Audit_TextChanged应该是个事件处理程序,也就是一个类似
C# code

private void Audit_TextChanged(object sender, RoutedEventArgs e)
{
//...
}

------解决方案--------------------
单纯就你这个问题来说,所谓“正确答案是B”相当牵强。编程就是要以简单为原则,当你没有将事件路由给上下各种组合控件时,就完全没有必要使用 EventManageer.RegisterClassHander。而你这个题目,显然是无厘头地要求别人必须使用 EventManageer.RegisterClassHander,是非常牵强的。