2012-01-20 2 views
0

WPF 응용 프로그램의 클래스에서 두 개의 동일한 동그라미를 만들고 같은 이벤트를 양쪽에 할당하려고합니다. 그러나 그 중 하나에서만 이벤트 핸들러가 작동하지만 다른 이벤트 핸들러에서는 작동하지 않습니다. 두 개의 다른 이름을 가진 동일한 이벤트 핸들러를 구현하려고 시도했지만 여전히 동일하게 발생합니다. 다음 코드와 관련하여 잠재적 인 문제는 무엇입니까?이벤트 처리기가 부분적으로 작동합니다

SmallCircle leftCircle1 = new InputCircle(Brushes.Yellow, 7, 7); 
Ellipse s1Ellipse = leftCircle1.thisEllipse; 
rectCanvas.Children.Add(s1Ellipse); 
SmallCircle leftCircle2 = new InputCircle(Brushes.Yellow, 7, 7); 
Ellipse s2Ellipse = leftCircle2.thisEllipse; 
rectCanvas.Children.Add(s2Ellipse); 

s1Ellipse.MouseLeftButtonDown += new MouseButtonEventHandler(input_MouseLeftButtonDown1); 
s2Ellipse.MouseLeftButtonDown += new MouseButtonEventHandler(input_MouseLeftButtonDown1); 
s3Ellipse.MouseLeftButtonDown += new MouseButtonEventHandler(output_MouseLeftButtonDown1);  


private void output_MouseLeftButtonDown1(object sender, MouseButtonEventArgs e) 
    { 
     rectCanvas.MouseLeftButtonDown -= Canvas_MouseLeftButtonDown; 
     rectCanvas.MouseLeftButtonUp -= Canvas_MouseLeftButtonUp; 
     rectCanvas.MouseMove -= Canvas_MouseMove; 


     nodeComb.lineCreated = true; 
     Point StartPosition = e.GetPosition(sender as UIElement); 
     nodeComb.initialPoint = StartPosition; 

    } 

    private void input_MouseLeftButtonDown1(object sender, MouseButtonEventArgs e) 
    { 
     if (nodeComb.lineCreated == true) 
     { 
      Point EndPosition = e.GetPosition(sender as UIElement); 
      nodeComb.endingPoint = EndPosition; 
      nodeComb.createLine(); 
      nodeComb.lineCreated = false; 
     } 

    }  

특히 s2Ellipse 이벤트 핸들러는 작동하지만 s1Ellipse는 작동하지 않습니다. 아래쪽 만 입력 원 (S2)

The Gui

는 처리기 수신 상기하지 않는다. 정말 이상합니다!

+0

왜 이벤트가 s1에 의해 해고되기를 기대합니까? –

+0

둘 중 하나에 끝나는 선을 그리려면 두 도형을 동일한 이벤트를 "수신 대기"해야합니까? 주문을 변경하더라도 s2 만 실행됩니다. – arjacsoh

+0

결과 GUI 이미지를 표시 할 수 있습니까? –

답변

0

좋아, 결국 문제가 발생했습니다. 각 사각형의 이름이 들어있는 사각형의 아래쪽 절반에 텍스트 상자를 추가합니다. 이것은 마우스 입력 이벤트 핸들러가 상단 원에 적용되지 않도록 작은 입력 원을 덮을 적절한 너비를가집니다. 방금 너비를 다듬었고 핸들러가 두 원에 모두 적용됩니다. 정말 기만적입니다 ...

관련 문제