コード例 #1
0
ファイル: HRAList.cs プロジェクト: mahitosh/HRA4
        public virtual void ReleaseListeners(object target)
        {
            if (ListChanged != null)
            {
                foreach (Delegate d in ListChanged.GetInvocationList())
                {
                    if (target == null || d.Target == target)
                    {
                        ListChanged -= (ListChangedEventHandler)d;
                    }
                }
            }
            if (LoadFinished != null)
            {
                foreach (Delegate d in LoadFinished.GetInvocationList())
                {
                    if (target == null || d.Target == target)
                    {
                        LoadFinished -= (LoadFinishedEventHandler)d;
                    }
                }
            }
            if (ListItemChanged != null)
            {
                foreach (Delegate d in ListItemChanged.GetInvocationList())
                {
                    if (target == null || d.Target == target)
                    {
                        ListItemChanged -= (ListItemChangedEventHandler)d;
                    }
                }
            }

            foreach (T ho in this)
            {
                ho.ReleaseListeners(target);
            }
        }
コード例 #2
0
ファイル: HRAList.cs プロジェクト: mahitosh/HRA4
        public void AddHandlersWithLoad(ListChangedEventHandler listChangedEventHandler,
                                        LoadFinishedEventHandler loadFinishedEventHandler,
                                        ListItemChangedEventHandler itemChangedEventHandler)
        {
            #if (CHATTY_DEBUG)
            string msg = "*** HRA LIST AddHandlersWithLoad on : " + this.ToString() + System.Environment.NewLine;
            if (listChangedEventHandler != null)
            {
                msg += "By: " + listChangedEventHandler.Target.ToString();
            }
            else if (loadFinishedEventHandler != null)
            {
                msg += "By: " + loadFinishedEventHandler.Target.ToString();
            }
            else if (itemChangedEventHandler != null)
            {
                msg += "By: " + itemChangedEventHandler.Target.ToString();
            }

            Logger.Instance.DebugToLog(msg);
            #endif

            if (listChangedEventHandler != null)
            {
                if (ListChanged == null)
                {
                    ListChanged += listChangedEventHandler;
                }
                else
                {
                    bool ok = true;
                    foreach (Delegate d in ListChanged.GetInvocationList())
                    {
                        if (d.Target == listChangedEventHandler.Target)
                        {
                            ok = false;
                        }
                    }
                    if (ok)
                    {
                        ListChanged += listChangedEventHandler;
                    }
                }
            }

            if (loadFinishedEventHandler != null)
            {
                if (LoadFinished == null)
                {
                    LoadFinished += loadFinishedEventHandler;
                }
                else
                {
                    bool ok = true;
                    foreach (Delegate d in LoadFinished.GetInvocationList())
                    {
                        if (d.Target == loadFinishedEventHandler.Target)
                        {
                            ok = false;
                        }
                    }
                    if (ok)
                    {
                        LoadFinished += loadFinishedEventHandler;
                    }
                }
            }

            if (itemChangedEventHandler != null)
            {
                if (ListItemChanged == null)
                {
                    ListItemChanged += itemChangedEventHandler;
                }
                else
                {
                    bool ok = true;
                    foreach (Delegate d in ListItemChanged.GetInvocationList())
                    {
                        if (d.Target == loadFinishedEventHandler.Target)
                        {
                            ok = false;
                        }
                    }
                    if (ok)
                    {
                        ListItemChanged += itemChangedEventHandler;
                    }
                }
            }

            if (loaded)
            {
                if (loadFinishedEventHandler != null)
                {
                    HraListLoadedEventArgs args = new HraListLoadedEventArgs();
                    args.sender     = this;
                    args.workerArgs = new RunWorkerCompletedEventArgs(this, null, false);
                    loadFinishedEventHandler.Invoke(args);
                }
            }
            else
            {
                LoadList();
            }
        }