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