EventHandlerにパラメータを渡す [重複] 質問する

EventHandlerにパラメータを渡す [重複] 質問する

EventHandlerパラメータ music を追加したものは次のとおりですMusicNote

public void PlayMusicEvent(object sender, EventArgs e,MusicNote music)
{
    music.player.Stop();
    System.Timers.Timer myTimer = (System.Timers.Timer)sender;
    myTimer.Stop();
}

次のようにハンドラーを追加する必要がありますTimer

myTimer.Elapsed += new ElapsedEventHandler(PlayMusicEvent(this, e, musicNote));

しかし、エラーが発生します:

「メソッド名が必要です」

編集: この場合、このコード スニペットを含むメソッドから e を渡すだけですが、タイマー自体を渡すにはどうすればよいでしょうかEventArgs?

ベストアンサー1

Timer.Elapsed特定のシグネチャ(引数objectと)のメソッドを想定しています。追加の引数を評価したメソッドEventArgsを使用する場合は、PlayMusicEventイベント登録中ラムダ式をアダプターとして使用できます。

myTimer.Elapsed += new ElapsedEventHandler((sender, e) => PlayMusicEvent(sender, e, musicNote));

編集:短縮バージョンも使用できます:

myTimer.Elapsed += (sender, e) => PlayMusicEvent(sender, e, musicNote);

おすすめ記事