基于this question,我正在尝试对TextBox Leave事件执行相同的操作。这本来应该很容易,我创建了一个扩展方法,如下所示:
public static class TextBoxExtensions
{
public static bool IsLeaveEventWired(this TextBox txt)
{
var eventKey = typeof(TextBox).GetField("EVENT_LEAVE",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Static)
.GetValue(txt);
EventHandlerList eventList = typeof(TextBox).GetProperty("Events",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance)
.GetValue(txt, null) as EventHandlerList;
return eventList[eventKey] != null;
}
}
问题是 EVENT_LEAVE 键显然不存在,因为我收到了NullReferenceException。到目前为止,我已经尝试获取所有TextBox的字段,但仅得到一个FieldInfo对象“ EVENT_TEXTALIGNCHANGED”,这不是我具有处理程序的事件,而我做的两个事件“ Leave”和“ KeyUp”也未包括在内列表。
因此,作为问题的标题,我如何找到TextBox的Leave事件的键以查看其是否已连接?
谢谢。