zoukankan      html  css  js  c++  java
  • 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];

                }

    }

        }

    作者: cglnet
    本文版权归cglNet和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    [arXiv18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
    [AAAI18]面向序列建模的元多任务学习
    [COLING18]两种成分句法分析的局部特征模型
    [ACL18]基于RNN和动态规划的线性时间成分句法分析
    成分句法分析综述
    [NAACL16]RNN文法
    [TACL17]基于中序转移的成分句法分析
    K-摇臂赌博机算法与实现
    关于JVM案例分析(四)
    关于JVM案例分析(三)
  • 原文地址:https://www.cnblogs.com/cglNet/p/2653395.html
Copyright © 2011-2022 走看看