사용자 지정 단추 (Winforms 컨트롤 라이브러리)를 만들고 아래 코드를 사용하여 모든 단추가 모든 단추에 추가되도록합니다. 그것을 실행할 때 스택 오버플로 예외가 발생합니다. MouseEnter 대신 Click과 동일한 코드가 있는데 제대로 작동합니다. 여기내 이벤트 속성 코드로 인해 스택 오버플로 예외가 발생하는 이유는 무엇입니까?
public new event EventHandler MouseEnter {
add
{
this.MouseEnter += value;
foreach (Control i in Controls)
{
i.MouseEnter += value;
}
}
remove
{
this.MouseEnter -= value;
foreach (Control i in Controls)
{
i.MouseEnter -= value;
}
}
}
클릭 코드 : 여기에 코드입니다 ".이 이벤트에 대한 가산을 호출"
public new event EventHandler Click {
add {
this.Click += value;
foreach (Control i in Controls) {
i.Click += value;
}
}
remove {
this.Click -= value;
foreach (Control i in Controls) {
i.Click -= value;
}
}
}
이것은 'Click'의 기본 버전 만 올린 경우에만 작동한다. 당신의 버전의'Click'은 핸들러의 서브 스크립 션을 컨트롤의 자식에게 전달하는 * 도우미 메소드가되었습니다. * ** 이벤트 덧셈기 뒤에이 로직을 숨기지 말고 명확하게 명명 된 주석 처리 된 도우미 메소드를 작성하십시오 . ** – dlev