代码之家  ›  专栏  ›  技术社区  ›  ebattulga

如何检查是否分配了事件处理程序

  •  3
  • ebattulga  · 技术社区  · 14 年前

    how to clear event handles in c#

    现在我需要知道如何检查已经分配的任何事件处理程序?

    4 回复  |  直到 7 年前
        1
  •  1
  •   Petar Minchev    14 年前

    如果事件与要执行检查的类在同一个类中,则可以比较 null HasEventHandlers

        2
  •  0
  •   Cylon Cat    14 年前

    除非我误解了这个问题,否则一个简单的null检查就足够了。在调用任何事件处理程序之前,始终需要在事件处理程序中检查null。

        3
  •  0
  •   luchosrock    12 年前

    btnSubmit 单击具有以下表达式的处理程序:

    (((System.Web.UI.Control)(btnSubmit)).Events.head.handler).Method
    
        4
  •  0
  •   Community Rick James    7 年前

    solution 由jonskeet提出,在这里显式实现事件处理是解决这个问题的最佳方法。

    以下是方法:

    private EventHandler m_myEvent;
    
    public event EventHandler OnEvent
    {
        add
        {
            // First try to remove the handler, then re-add it
            m_myEvent -= value;
            m_myEvent += value;
        }
        remove
        {
            m_myEvent -= value;
        }
    }
    

    在不太可能的情况下,您有多播代理,您可能会遇到奇怪的行为。