0

foreach ループに登録された CommandEventhandler を持つコントロールのコレクションがあります。

    foreach (Control control in myObject.Controls)
    {
        control.Command += new CommandEventHandler(myEventHandler);
    }

コレクション内の一部のコントロールには、ハンドラーを登録しないでください。

Button に CommandEventHandler が登録されないようにする方法はありますか?

4

1 に答える 1

1

イベントが定義されているコードにアクセスできる場合は、ハンドラーを追加するかどうかを決定する「追加」アクセサーにチェックを入れることができます。次のようになります。

private EventHandler _myEvent;

public event EventHandler MyEvent
{
    [MethodImpl(MethodImplOptions.Synchronized)]
    add 
    { 
        if (CanAddEventHandler()) // <- that's yours to implement
        {
             _myEvent = (EventHandler)Delegate.Combine(_myEvent, value);
        }
    }
    [MethodImpl(MethodImplOptions.Synchronized)]
    remove 
    { 
        _myEvent = (EventHandler)Delegate.Remove(_myEvent, value); 
    }
}
于 2013-10-29T15:55:00.930 に答える