【技巧】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