如何找出TextBox离开事件的私有字段值?

时间:2018-11-08 21:37:07

标签: c# winforms events

基于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事件的键以查看其是否已连接?

谢谢。

0 个答案:

没有答案