示例#1
0
 /// <summary>
 /// 广播事件
 /// </summary>
 /// <param name="event">事件类型</param>
 /// <param name="context">发布广播的监听器</param>
 /// <param name="eventControl">触发事件的控件</param>
 public static void Broadcast(FocusEvent @event, FocusListener context, Control eventControl)
 {
     foreach (FocusListener listener in Instance.FocusListeners)
     {
         if (listener != null && listener != context)
         {
             listener.OnBroadcast(@event, context, eventControl);
         }
     }
 }
示例#2
0
        public void OnBroadcast(FocusEvent @event, FocusListener context, Control eventControl)
        {
            // 判断是不是其他监听器的消息(广播转发的时候其实已经过滤了,这句判断可以不加)
            if (context != this)
            {
                switch (@event)
                {
                case FocusEvent.Got:
                    // 如果是其他监听器下的控件获得了焦点,且焦点最后的状态记录为true,则主动执行失去焦点的事件函数
                    if (isOnFocus && !ChildControls.Contains(eventControl))
                    {
                        ChildControl_LostFocus(lastOnFocusControl, new EventArgs());
                    }
                    break;

                case FocusEvent.Lost:

                    break;
                }
            }
        }
示例#3
0
 public static void RemoveListener(FocusListener listener)
 {
     Instance.FocusListeners.Remove(listener);
 }
示例#4
0
 /// <summary>
 /// 添加监听器
 /// </summary>
 /// <param name="listener"></param>
 public static void AddListener(FocusListener listener)
 {
     Instance.FocusListeners.Add(listener);
 }