2011-12-14 4 views
3

다른 클래스의 이벤트를 등록하려고하는 클래스가 있습니다.다른 클래스의 마우스 이벤트를 등록하는 방법

public void Mouse_Down(object sender, MouseEventArgs e) 
     { 

     } 

나는과 같이 클래스 B의 이벤트를 등록하고 : 클릭 아무것도 발생하지 않으면

  ClassA classA = new ClassA(); 
      classA.MouseDown += new MouseEventHandler(classA.Mouse_Down); 

다음과 같이 클래스 A에서

내가하는 방법이있다. 누구든지 문제가 무엇인지 알 수 있습니까?

+0

'Mouse_Down' 메소드에서 중단 점 설정을 시도 했습니까? –

+0

두 번째 코드 스 니펫의 두 번째 줄에 질문에 오타가있는 것처럼 보입니다. 시작할 때 classA가 아닌 ** this ** 키워드를 사용 하시겠습니까? – Maheep

+0

예. 결코 방법에 들어 가지 않았습니다. 어떤 아이디어? –

답변

0

이벤트 트리거링 코드 (classA)에 중단 점을 설정하고 EventHandlers 콜렉션을 점검하십시오. 아무도 등록되어 있지 않고 classA 인스턴스를 망치고 있다고 생각합니다.

중단 점을 얻지 못할 수도 있습니다. 즉, 이벤트가 시작되지 않을 수도 있습니다.

어쨌든 당신이하고 싶은 일은 저에게 이상한 모양입니다.

편집 :

당신이 '정상적인 방법'같은 이벤트 (. 예를 ClassA 생성자에서)를 다른 방법을 등록하려고 있나요? 이벤트 트리거 코드에 액세스 할 수 없으면 이벤트 발생 시점에 적절한 핸들러가 등록되어 있는지 확인하는 것이 가장 좋습니다.

1

당신이 ClassB에 의해 제기 된 이벤트 처리하는 가정 :

당신은 ClassA의 이벤트가 아닌 ClassB 년대의 이벤트를 등록합니다. 당신이 클래스 B에서하고 있다는 사실은 아무 의미도 없습니다.


당신이 ClassA에 의해 제기 된 이벤트를 처리 할 않는 가정 :

하나의 가능성은 ClassA의 다른 인스턴스가 이벤트가 아닌 이벤트가 처리 년대를 유발된다는 것이다.

ClassA classA = new ClassA(); 

위의 코드는 classA의 새 인스턴스를 만듭니다. 이벤트를 발생시키는 것이이 이벤트가 아니라면, 메소드를 호출하지 않아도됩니다.

관련 문제