Обработчик событий работает частично - PullRequest
0 голосов
/ 20 января 2012

Я создаю в классе приложения 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 - нет.

The Gui

Только нижний круг ввода (s2) слушает обработчик,выше нет.Действительно очень странно!

1 Ответ

0 голосов
/ 20 января 2012

Хорошо, я наконец потерял проблему.Я добавляю текстовое поле в нижней половине прямоугольника, которое содержит название каждого прямоугольника.У этого была достаточная ширина, чтобы покрыть маленький входной круг, чтобы обработчик событий мыши не применялся к верхнему кругу.Я просто урезал его ширину и обработчик применяется к обоим кругам.Действительно обманчиво ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...