2008-09-27 2 views
0

방금 ​​시작한 Windows Form 프로젝트가 있습니다. 양식에 제품과 함께로드 할 목록 상자가 있습니다. 누군가 제품을 두 번 클릭하면 ProductChanged 이벤트를 발생 시키길 원합니다. 내 프로젝트의 다른 것들은이 이벤트에 가입하고 제품이 변경 될 때 GUI의 다른 부분을 업데이트합니다.이벤트를 부르는 적절한 장소?

내 질문은 어디에서 이벤트가 발생해야하며 누가 제기해야합니까? 이벤트가 폼에 있고 목록 상자의 더블 클릭 핸들러에 의해 제기되어야합니까? 또는 이벤트가 내 Products 클래스에 있고 목록 상자가이 클래스의 메서드를 호출하여 제품이 변경되었음을 알리는 곳으로 설정해야합니다. 그리고 Product 클래스가 이벤트를 발생시킬 것입니까? 아니면 다른 방법으로해야합니까?

답변

1

변경된 제품은 UI 이벤트이며 폼에서 발생하는 경우 해당 UI 요소가 이벤트에 적용됩니다.

1

목록 상자는 제품이 변경되었으므로 이벤트를 발생시켜야합니다.

0

이벤트가 의미하는 바에 따라 다릅니다. Product 객체가 수정되었음을 구독자에게 알리기위한 의도 인 경우 Product 클래스에 속하며 해당 클래스 내부의 코드에 의해 해고되어야합니다. 의도가 다른 Product 객체가 선택되었다는 것을 알려주는 것이라면 이는 제품 목록 (목록 상자/양식)을 관리하는보기에 속합니다.

0

이름 ProductChanged은 제품이 변경되는 동안 이벤트가 발생 함을 의미합니다. 이 경우 제품 클래스에서 이벤트를 발생시킵니다.이 경우 각 변경이 이벤트를 트리거하기 때문입니다. GUI에서 트리거하고 나중에 (예를 들어) 가져 오기 기능을 추가하는 경우 변경 후 이벤트를 실행하는 것을 잊어 버린 경우가 있습니다.

관련 문제