CheckedChanged 이벤트 (또는 다른 C# 이벤트)가 사용자 이벤트로 선언되는 방법이 있습니까? 문제는 코드에서 Checked 속성을 변경하면 이벤트가 호출되고 이것이 원하지 않는 것입니다 (예 : MFC에서 이벤트는 속성 이벤트와 반대되는 사용자 이벤트 임). 부울 플래그로 전달하면 2011 년에 조금 어색해집니다!사용자 이벤트 - 예 체크 박스
답변
이벤트를 등록 취소 할 수 있습니다. 값을 변경하면 다시 구독 할 수 있습니다.
this.checkBox1.CheckedChanged -= new EventHandler(checkBox1_CheckedChanged);
this.checkBox1.Checked = true; // will not firing the CheckedChanged event
this.checkBox1.CheckedChanged += new EventHandler(checkBox1_CheckedChanged);
alternativly이 도움이
희망을 작동이
bool isUser = true;
public Form1()
{
InitializeComponent();
isUser = false;
this.checkBox1.Checked = true;
isUser = true;
}
void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (!isUser) // check if the change has fired by user
return;
// ...
}
모두 같은 우회 변수를 설정할 수 있습니다.
유망한 것 같아서 고마워. 이 기사는 내가 한 일이다. 구독 취소는 하나의 이벤트가 다른 이벤트와 상호 작용하기 때문에 더 명확하지만 다른 방법은 혼란 스럽습니다. – Sunscreen
내가 당신을 도울 수 있다면 기뻐. – dknaack
'this.checkBox1.CheckedChanged - = new EventHandler (checkBox1_CheckedChanged);라고 쓰는 것은 어색함을 느낀다;'새로운 EventHandler (checkBox1_CheckedChanged)'가 아닌가? 그렇다면 새로운 객체는 이미'CheckedChanged' 컬렉션에 존재할 수 없습니다. 나는이 코드가 당신이 암시하는대로 작동한다는 것을 당신의 말에 믿을 것입니다. – DonkeyMaster
C#은 "사용자 이벤트"를 확실히 지원하지 않습니다. 키워드 이벤트를 사용하여 지정되는 한 가지 유형의 이벤트 만 지원합니다 (기본적으로 은 대리자 참조로 제어 됨). C#이 이벤트를 취급하는 방법에 대해 좀 더 배우고 싶다면 Jon Skeet's excellent treatment of the subject here을보십시오.
지금, 당신이 비교하는 것은 실제로 사과에 사과가 아닙니다. MFC는 프레임 워크입니다. C#은 언어입니다. 따라서 프레임 워크에 관한 한 프레임 워크에 따라 다릅니다. 귀하의 예에서는 WinForms를 언급 한 것처럼 보입니다. 다시 말하면 대답은 불행히도 아니오입니다. WinForms는 사용자 이벤트를 설명 할 때 "사용자 이벤트"를 지원하지 않습니다.
- 1. 취소 체크 박스 체크 이벤트
- 2. jqGrid 체크 박스 이벤트
- 3. 체크 박스 체크 박스 체크 박스
- 4. Knockoutjs 체크 박스 변경된 이벤트
- 5. 격자의 MVC 체크 박스 이벤트
- 6. 체크 박스 표시시 이벤트 토글
- 7. 안드로이드리스트 체크 박스 체크 박스
- 8. mvc3 면도날의 체크 박스 목록 예
- 9. 체크 박스 그룹에서 체크 된 체크 박스
- 10. Android 체크 박스 사용자 정의
- 11. Silverlight의 사용자 정의 체크 박스
- 12. JSTree select_node 이벤트 및 체크 박스
- 13. jQuery 동적 체크 박스 이벤트 처리
- 14. 인 Dijit 체크 박스 트리 이벤트 위임
- 15. 체크 박스 체크 박스 합계 값
- 16. 체크 박스/체크되지 않은 체크 박스
- 17. 체크 박스
- 18. 체크 박스
- 19. 격자보기의 체크 박스 컨트롤
- 20. 안드로이드리스트 뷰 (setOnItemClickListener) 체크 박스 체크 박스와 체크 박스 체크 박스
- 21. WPF 용 사용자 정의 체크 박스 스타일
- 22. CSS 사용자 정의 체크 박스 레이아웃
- 23. 젠드 폼 체크 박스 요소 사용자 정의
- 24. 체크 박스 문제가있는 사용자 정의 목록보기
- 25. 체크 박스 사용
- 26. 여러 체크 박스 게시물
- 27. PyQt의 체크 박스 목록보기
- 28. PHP $ _POST의 체크 체크 박스
- 29. elgg에서 선택 양식 (예 : 체크 박스)으로 이미지를 사용하는 방법
- 30. 체크 박스 값을 기준으로 MySQL에 예 또는 아니오를 삽입하십시오.
변경 사항이 발생한 곳을 돌보는 경우 큰 실수가 있습니다. 체크 상자가 코드에서 설정되면 왜 중요합니까? – Jon
@ 존 - 당신은 아주 좋은 지적을했습니다. 드문 경우지만 이벤트가 사용자 생성인지 코드 생성으로 생성되었는지 대부분 추상화해야하는지 알면 도움이 될 수 있습니다. –
@Jon 유용 할 때가 몇 가지 있습니다. 예를 들어 사용자가 상자를 검사 할 때 로그에 기록하려는 경우 또는 사용자가 확인란을 선택했을 때 메시지 상자를 표시하고 코드에서 호출 할 때는 메시지 상자를 표시 할 필요가없는 경우. 물론, 다른 계층과 같은 종류의 기본 변수를 추가하여 더 나은 아키텍처를 얻을 수는 있지만, 단순한 예외를 과도하게 엔지니어링하는 것일 수 있습니다. – DonkeyMaster