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);