2011-08-29 2 views
3

부모 컨테이너에 등록 된 MouseLeftButtonUp 이벤트에서 클릭 한 객체를 얻는 방법?

저는 캔버스 위에 ellipses를 그렸습니다. 저는 Canvas에 MouseLeftButtonUp을 등록했습니다. 저는 다음을 사용하여 어떤 타원을 클릭했는지 알고 싶습니다.

(Ellipse)e.Source 

그러나 e.Source는 항상 캔버스입니다. 또한 e.OriginalSource를 시도하고 PreviewMouseLeftButtonUp을 사용하여 동일한 결과를 얻었지만 여전히 동일한 결과를 보였습니다. 이벤트 arg는 MouseButtonEventArgs입니다. 내가 뭘 잘못하고 있죠? 또한 특정 지점에 캔버스의 하위 요소가 있는지 확인하는 방법이 있습니다.

+0

로 변경 편집, 질문을 오해. 여기에 관련 코드를 붙여 넣을 수 있습니까? –

+0

@ RV1987 왜 mouseleftbuttondown과 동일한 논리가 작동합니까? 다음은 코드입니다. 'private void mainCanvas_MouseLeftButtonUp (object sender, MouseButtonEventArgs e) { MessageBox.Show ((e.Source) .ToString()); } 정확하게 동일한 코드는 마우스 왼쪽 버튼에서 타원을 보여줍니다. – mihajlv

답변

0

아마도 MouseLeftButtonUp이 아닌 PreviewMouseLeftButtonUp이 필요합니다. 또한 Canvas의 MouseUp 이벤트 대신 Ellipse.PreviewMouseLeftButtonUp을 사용하여 이벤트를 등록해야 할 수도 있습니다. 이 같은 것 :

<Canvas ... Ellipse.PreviewMouseLeftButtonUp="MyHandler" /> 

그리고 H.B. e.Source가 아니라 e.OriginalSource를 사용하려고합니다.

편집 : 당신 스스로 당신이 캔버스에 이벤트를 등록을 한 것을 말하므로 원본과 원본 소스는 항상 자체 캔버스가 될 것입니다 PreviewMouse * LeftButton * 위

관련 문제