protected virtual bool ProcessCollection(
            GridViewEvent gridEvent,
            PriorityWeakReferenceList list,
            GridEventProcessMode processMode)
        {
            bool flag = false;

            foreach (IGridViewEventListener viewEventListener in list.ReverseForEach())
            {
                switch (processMode)
                {
                case GridEventProcessMode.Process:
                    GridViewEventResult gridViewEventResult1 = viewEventListener.ProcessEvent(gridEvent);
                    flag = gridViewEventResult1 != null && gridViewEventResult1.StopDispatch;
                    break;

                case GridEventProcessMode.PreProcess:
                    GridViewEventResult gridViewEventResult2 = viewEventListener.PreProcessEvent(gridEvent);
                    flag = gridViewEventResult2 != null && gridViewEventResult2.StopDispatch;
                    break;

                default:
                    GridViewEventResult gridViewEventResult3 = viewEventListener.PostProcessEvent(gridEvent);
                    flag = gridViewEventResult3 != null && gridViewEventResult3.StopDispatch;
                    break;
                }
                if (flag)
                {
                    break;
                }
            }
            return(!flag);
        }
        public bool Contains(IGridViewEventListener listener)
        {
            if (listener == null)
            {
                return(false);
            }
            GridEventProcessMode desiredProcessMode = listener.DesiredProcessMode;

            return((desiredProcessMode & GridEventProcessMode.PreProcess) == GridEventProcessMode.PreProcess && this.preProcessListeners.IndexOf(listener) >= 0 || (desiredProcessMode & GridEventProcessMode.Process) == GridEventProcessMode.Process && this.processListeners.IndexOf(listener) >= 0 || (desiredProcessMode & GridEventProcessMode.PostProcess) == GridEventProcessMode.PostProcess && this.postProcessListeners.IndexOf(listener) >= 0);
        }
        public void Remove(IGridViewEventListener listener)
        {
            GridEventProcessMode desiredProcessMode = listener.DesiredProcessMode;

            if ((desiredProcessMode & GridEventProcessMode.PreProcess) == GridEventProcessMode.PreProcess)
            {
                this.preProcessListeners.Remove(listener);
            }
            if ((desiredProcessMode & GridEventProcessMode.Process) == GridEventProcessMode.Process)
            {
                this.processListeners.Remove(listener);
            }
            if ((desiredProcessMode & GridEventProcessMode.PostProcess) != GridEventProcessMode.PostProcess)
            {
                return;
            }
            this.postProcessListeners.Remove(listener);
        }
        public void Add(IGridViewEventListener listener)
        {
            if (!this.VerifyAdd(listener))
            {
                return;
            }
            GridEventProcessMode desiredProcessMode = listener.DesiredProcessMode;

            if ((desiredProcessMode & GridEventProcessMode.PreProcess) == GridEventProcessMode.PreProcess)
            {
                this.preProcessListeners.Add(listener);
            }
            if ((desiredProcessMode & GridEventProcessMode.Process) == GridEventProcessMode.Process)
            {
                this.processListeners.Add(listener);
            }
            if ((desiredProcessMode & GridEventProcessMode.PostProcess) != GridEventProcessMode.PostProcess)
            {
                return;
            }
            this.postProcessListeners.Add(listener);
        }