c# 刪除事件委托


我們經常為遇到這中情況,單擊某一個控件,根據不同的情況,激發不同的事件。因此,就要處理多事件綁定的問題。由於c#的事件是一種多播委托。當綁定多個事件時,事件會依次觸發。而如果我們只希望只觸發最后一次綁定的事件,那么之前的事件綁定應被解除。在不知道前一個方法名稱的情況下,如果解除綁定,就是一個問題。網上用到了反射的方式,確實也是一種解決之道。不過我更希望用如下的方式。即把方法存入一個List<>中,每次事件綁定時,遍歷List<>中的委托,刪除所有綁定事件,然后再次綁定控件。

代碼如下:

    public delegate void sayHelloHandle(string pMessage);

    public class TestEvent

    {

        public TestEvent()

        {

            _HandleList = new List<sayHelloHandle>();

        }

        private List<sayHelloHandle> _HandleList;

        private event sayHelloHandle _sayHello;

        public event sayHelloHandle sayHello

        {

            add

            {

                ClearEvent();

                _sayHello += value;

                _HandleList.Add(value);

            }

            remove

            {

                _sayHello -= value;

            }

        }

        private void ClearEvent()

        {

            for (int i = 0; i < this._HandleList.Count;i++ )

            {

                _sayHello -= this._HandleList[i];

            }

}

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM