에서 이벤트를 호출 할 수 없습니다 이제 내 문제는 form_load에서 사용할 때 이벤트가 호출되지만 버튼 이벤트에서 사용할 때입니다. 그냥 이벤트를 건너 뛴다면, 버튼 클릭을 디버깅 할 때 이벤트로 들어가려고했다. 하지만 이벤트가 버튼에서 호출되지 않는 이유를 알아 내려고 노력한 결과 진전이 없었습니다.내가 세 가지 이벤트를 버튼
답변
다른 사람들이 지적한대로 pnlTiles.Paint += pnlTiles_Paint;
은 pnlTiles
컨트롤의 Paint
이벤트에 가입하고 있음을 의미합니다. 즉, pnlTiles
이 Paint
이벤트를 발생시킬 때마다 pnlTiles_Paint
에 지정된 메서드가 호출됩니다. Paint
의 원인은 무엇입니까? 제어 다시 그리면 msdn에 따르면
페인트 이벤트가 발생된다. PaintEventArgs의 인스턴스를 Paint 이벤트를 처리하는 메서드로 전달합니다.
그래서 아마 무슨 일이 일어나고 있는지 핸들러가 호출 받고 끝나는 이유 (이 pnlTiles
가 화면에 그려지고 처음부터) 기본 양식이 Load
이벤트를 발생 후에 pnlTiles
가 Paint
이벤트를 발생시키는 것입니다.
그러나 버튼을 클릭해도 pnlTiles
이 다시 그려지고 Paint
이벤트가 발생하지 않으므로 처리기가 호출되지 않습니다.
어떤 이유로 든 Button's
클릭 핸들러에 핸들러를 연결 한 후에 pnlTiles
을 다시 그려야하는 경우 pnlTiles_Paint
이 호출됩니다. pnlTile's
Paint
이벤트를 구독 한 후 Button's
클릭 핸들러에서 pnlTiles.Invalidate()
을 호출하여 테스트 할 수 있습니다.
private void btnUpdate_Click(object sender, EventArgs e)
{
pnlTiles.Paint += pnlTiles_Paint;
pnlTiles.Invalidate();
}
당신이 이벤트의 기본에 약간 퍼지있어 이후
, 그것은이 기사를 읽고 가치가있을 수 있습니다또한 동일한 이벤트를 여러 번 구독하지 않는 것에 대한이 게시물의 cgijbels 코멘트를 읽으십시오.
'pnlTiles_Paint' 메소드를'btnUpdate_Click' 메소드의'Paint' 이벤트에 등록하지 마십시오. 버튼을 클릭 할 때마다'Paint' 이벤트에 __another__ subscription을 추가 할 것이므로, 그것은 같은 방법이거나 아닙니다. 그리고 당신의'pnlTiles_Paint' 메쏘드는 동일한'Paint' 이벤트 중에 여러번 실행될 것이고, 버튼을 클릭할수록 느려지 게됩니다. 따라서 단 한 번만 구독하거나 버튼을 클릭 할 때 정말로 구독해야하는 경우 다시 가입하기 전에 구독을 취소해야합니다. – cgijbels
물론, 좋은 조언입니다. 나는 특정 행동에 관한 질문에 단순히 답하고 있었기 때문에 할일에 대해 이야기하는 것이 중요하다고 생각하지 않았고 이벤트에 가입하지 않아도되었습니다. –
- 1. 내가 세 가지 활동이 세 번째 활동
- 2. 레일 내가 세 가지 모델이
- 3. 레일 내가 세 가지 모델이
- 4. 유효성 내가 세 가지 프로젝트가
- 5. 한 번의 검색에서 세 가지 작업 버튼
- 6. 세 가지 인수를
- 7. 버튼 이벤트를 발생시키는 두 가지 방법
- 8. 내가 내 솔루션의 주요 세 가지 층이
- 9. 효과 내가 세 가지 항목을 데
- 10. MySQL의 세 가지 내가 3 개 테이블이
- 11. TabActivity 통과 엑스트라 내가 세 가지 활동을
- 12. 내가 세 가지 기능은 다음 한 요소
- 13. 내가 세 가지 모델이 중첩 협회
- 14. 내가 세 가지 관련 모델을 가지고
- 15. 내가 세 가지 레이아웃이 작업 표시 줄
- 16. knockoutjs 내가 내 웹에서 세 가지 형태가
- 17. 내가 세 가지 값으로 selectonechoice이 ADF
- 18. 어떻게 내가 세 가지 형태가 .... 개요
- 19. 건조까지 내가 세 가지 방법이 같이있어
- 20. 는 내가 세 가지 구조를 만드는 오전
- 21. JAXB 내가 XSD에서이 세 가지 유형이 목록
- 22. 내가 AJAX 세 가지 호출을 실행하려고했다 위해
- 23. 안드로이드에서 단일 버튼 클릭으로 세 가지 다른 이벤트를 구현하는 방법은 무엇입니까?
- 24. 내가 페이지에서 버튼 이벤트를 감지 할
- 25. 나는이 세 가지 수업을
- 26. 세 가지 선택이
- 27. 세 가지 수식의 단순화
- 28. 세 가지 다른 테이블
- 29. Expression.And 세 가지 조건
- 30. 세 가지 CSS3DObject 설명서?
이러한 진술은 이벤트를 * 호출 * 이벤트 * 구독 *하지 않습니다. 그것은 매우 다릅니다. –
그래서 당신이 등록하고있는'Paint' 이벤트가 발동 될 때만 핸들러가 호출됩니다. –
Re :' "나는 세 가지 다른 이벤트가있다."- 아니, 당신은 세가지 다른 이벤트 핸들러를 가지고있다. –