Передайте параметр EventHandler

У меня есть следующий EventHandler к которому я добавил параметр MusicNote music:

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

но получите ошибку:

«Ожидаемое имя метода»

EDIT: В этом случае я просто передаю e из метода, который содержит этот fragment кода, как я могу передать собственные EventArgs таймера?

    Timer.Elapsed ожидает метод конкретной сигнатуры (с аргументом object и EventArgs ). Если вы хотите использовать свой метод PlayMusicEvent с дополнительным аргументом, оцененным во время регистрации события , вы можете использовать lambda-выражение в качестве адаптера:

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

    Изменить: вы также можете использовать более короткую версию:

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

    Если я правильно понимаю вашу проблему, вы вызываете метод вместо передачи его в качестве параметра. Попробуйте следующее:

     myTimer.Elapsed += PlayMusicEvent; 

    где

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

    Но вам нужно подумать о том, где хранить заметку.

    Давайте будем гением компьютера.