如题,比如,我在button的click事件执行过程中,有可能触发该button的其它事件,如何能让该click事件执行完再响应其它事件?有人说重写该事件,不要调基类的函数,我想知道还有没有其它的方法??

解决方案 »

  1.   

    比如 执行click实触发 某事件
    只要在click事件的第一行代码
    某对象 -= new System.EventHandler(某事件);
    等到click事件执行到最后一行代码时
    某对象 += new System.EventHandler(某事件);
    这要可跳过某事件注意的是 使用return前要把
    某对象 += new System.EventHandler(某事件);
    补上去不然改事件就未注册了
      

  2.   

    我想最简单的办法是设置一个标志:
    例如设置一个变量,flag=0;//不触发,flag=1;触发
    也即,在button的click的事件中,若想不触发其它事件则,flag=0;在其它事件中判断这个flag,若flag=0,则不执行该事件下的代码!!
      

  3.   

    this.btn.Click += ...
    this.btn....+=...
      

  4.   

    刚才描述错了问题是这样的,我在界面上有一个tabcontrol控件,上面有若干tabpage页面。我在用鼠标选中某一个tabpage时,在selected事件中执行了一系列我想要的操作。但在另外的地方,有使用代码设置该tabcontrol控件的selectTab的地方,执行这些地方的时候,会触发selected事件,此时我不想让代码触发selected事件,只想用鼠标选中时触发,如何实现???
      

  5.   

    jishengzu的方法好使,谢谢了。
      

  6.   

    .net的这个逻辑没有问题,是你自己的程序结构不清楚导致了问题所在。
      

  7.   

    protected override void WndProc(ref Message m)
    {
           switch(m.Msg)
          {
                case click事件:
                       if ((int)m.Result != 你的消息)
                            m.Result = (IntPtr)你的消息;
                            return;
                            break;
        }
        base.WndProc(ref m);
    }