我EventHandler添加了以下参数MusicNote音乐:
EventHandler
MusicNote
public void PlayMusicEvent(object sender, EventArgs e,MusicNote music) { music.player.Stop(); System.Timers.Timer myTimer = (System.Timers.Timer)sender; myTimer.Stop(); }
我需要Timer像这样添加处理程序:
Timer
myTimer.Elapsed += new ElapsedEventHandler(PlayMusicEvent(this, e, musicNote));
但得到错误:
“预期方法名称”
编辑:在这种情况下,我只是从包含此代码片段的方法中传递e,我将如何传递计时器自己的EventArgs?
EventArgs
Timer.Elapsed期望具有特定签名的方法(带有参数object和EventArgs)。如果要 在事件注册期间* 使用PlayMusicEvent带有附加参数的方法,可以将lambda表达式用作适配器: *
Timer.Elapsed
object
PlayMusicEvent
myTimer.Elapsed += new ElapsedEventHandler((sender, e) => PlayMusicEvent(sender, e, musicNote));
编辑: 您也可以使用较短的版本:
myTimer.Elapsed += (sender, e) => PlayMusicEvent(sender, e, musicNote);