2

イベント ハンドラー メソッド リストを分割する方法がわかりません。
たとえば、次のコードがあります。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
     }
...
}
4

2 に答える 2

4

あなたのデリゲートを定義することができるので、あなた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、それらの 1 つからその状態に設定されると、他のイベント ハンドラーはそのイベント処理をスキップするかどうかを確認します。

単なるアイデアの例です。コードの正確なニーズに合わせて変更する必要があります。

于 2013-01-25T13:15:17.290 に答える
0

KeyDownEventArgs を調べると、Handledtrue に設定できるプロパティがあります。
同様のことができます:

class myClass {
    public event EventHandler myEvent;

    myEvent += new EventHandler(met1);
    myEvent += new EventHandler(met2);
    myEvent += new EventHandler(met3);

    public void metN(object sender, MyCustomEventArgs e)
    {
        if(e.Cancel)
            return;

        // Do whatever you like

        if(<someBooleanStatement>)
        {
            e.Cancel = true;
            return;
        }

        // Do whatever you like
    }
}
于 2013-01-25T13:18:52.013 に答える