我不知道如何中断事件处理程序方法列表。例如,我有以下代码。我应该在IF语句中写些什么?

public event EventHandler myEvent;
...
myEvent += new EventHandler(met1);
myEvent += new EventHandler(met2);
myEvent += new EventHandler(met3);
...
public void met2(object sender, EventArgs e)
{
...
     if(myCondition)
     {
     //there I want to break execution of all methods assiciated with myEvent event
     //I want to break met2 and don't allow to execute met3
     }
...
}

最佳答案

您可以定义您的委托,因此您的custom event handler(带有自定义EventArgs)具有布尔值。

例:

public class MyEventArg : EventArgs {

    public bool Handle {get;set;}

}

myEvent += new MyEventHandler(met1);

public void met2(object sender, MyEventArgs e)
{

   if(e.Handled)
      return;

   if(myCondition)
   {
       e.Handled = true;
       return;
   }
...
}


这样,如果我们在处理任何其他事件处理程序之前,先检查Handled == true是否从其中一个设置为该状态,则其他人将跳过该事件处理。

仅是一个示例示例,您必须对其进行更改以适合您的代码的确切需求。

10-08 05:08