我自定义一个控件,里面自定义了一个事件 dbclick然后再窗口中动态装载自定义控件,并加入控件的dbclick事件。可问题出来了,我要是只装载一个控件的话没有问题,如果装载多个控件,那么我每一次触发dbclick事件都会自动触发多次,后来看了看,是装载了几个控件则触发几次事件。不知道我说明白了没有,反正希望大家帮忙啊,先谢过了

解决方案 »

  1.   

    触发事件的代码中,可以用一个ID号来判断一下是由哪个控件引发的,这样既可以避免多次出发,又可以跟踪引发事件的控件。
    ID号可以用自定义一个tempEventArgs来传递
      

  2.   

    代码大概是这样的,我是两个自定义空间A,B
    其中A装载B
    //A中定义委托
    public event BDBClickHandler BDBClick;
    public delegate void BDBClickHandler (object source,BEventArgs args);
    //其中BEventArgs 为继承于EventArgs,主要为判断是否击中B,并把当前B带入参数中//
    A有属性Bs为B的Collection
    A使用方法根据Bs装载B控件
    for (.....)
    {
        B.属性 = ...
        A.Controls.Add(B[i]);
        B[i].DoubleClick += new System.EventHandler(B_DoubleClick);
    }
    //触发BDBClick
    private void B_DoubleClick(object sender, System.EventArgs e)
    {
    B CurrgtB = (B)sender;
    if (CurrgtB != null && BDBClick!= null)
    BDBClick(this,new BEventArgs (CurrgtB));
    }//在Form中装载A后
    调用A中方法在A中装载B
    这时如果执行A中BDBClick事件,则A中有几个B也就是A中Bs的Count为几,则自动触发几次不知道这次写明白了吗?