首页 > 解决方案 > 如何找出 TextBox Leave 事件的私有字段值?

问题描述

基于这个问题,我试图对 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”,这不是我有处理程序的事件,而且我所做的两个事件“离开”和“KeyUp”不包括在名单。

所以作为问题的标题,我怎样才能找到 TextBox 的 Leave 事件的关键来查看它是否已连接?

谢谢你。

标签: c#winformsevents

解决方案


推荐阅读