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)监听处理程序中,上述没有。 真的很奇怪!
你为什么期望这个事件也会被s1发射? – 2012-01-20 16:11:22
我希望两个形状都能“倾听”同一个事件,以绘制一条结束于其中任何一个的行?即使当我改变他们的顺序时,只有s2发射。 – arjacsoh
可以显示生成的GUI的图像吗? –