development

EventHandler에 매개 변수 전달

big-blog 2020. 9. 2. 19:47
반응형

EventHandler에 매개 변수 전달


이 질문에 이미 답변이 있습니다.

 

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

과 같이 처리기를 추가해야합니다 .

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

하지만 오류가 발생합니다.

"메소드 이름이 필요합니다."

편집 :이 경우이 코드 스 니펫이 포함 된 메서드에서 e를 전달합니다. 타이머 자체를

EventArgs

어떻게 전달 합니까?


Timer.Elapsed

(인수 특정 서명의 방법 기대

object

EventArgs

). 당신이 사용하려는 경우

PlayMusicEvent

평가 추가 인수와 방법을

이벤트 등록시

, 당신은 어댑터로 람다 식을 사용할 수 있습니다 :

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

그러나 메모를 저장할 위치를 생각해야합니다.참고 URL :

https://stackoverflow.com/questions/8644253/pass-parameter-to-eventhandler

반응형