【发布时间】:2017-09-08 22:11:13
【问题描述】:
在我的 WPF 项目中,我有一个画布,我在其上在 XAML 中绘制一个椭圆并向其添加一个 MouseEnter 事件:
<Canvas Width="600" Height="480" Name="canvas1" HorizontalAlignment="Left">
<Ellipse Height="20" Width="20" Canvas.Left="50" Canvas.Top="50" Fill="blue" Name="ellipse1" Mouse.MouseEnter="ellipse1_MouseEnter" MouseLeave ="ellipse1_MouseLeave"/>
</Canvas>
在代码隐藏中我有这个代码:
private void ellipse1_MouseEnter(object sender, MouseEventArgs e)
{
ellipse1.Fill = Brushes.Red;
}
当我用鼠标输入椭圆时,它会按预期变为红色。
我还有一些代码可以在我单击鼠标的画布上绘制一个椭圆。我有一个名为 Vertex 的类,我在其中创建了一个椭圆,它引用了画布。
当我实例化一个新顶点(以及一个椭圆)时,我将椭圆添加到画布的子项中。在将它添加到画布之前,我向 MouseEnter 事件添加了一个处理程序:
MyEllipse.MouseEnter += new System.Windows.Input.MouseEventHandler(MyEllipse_MouseEnter);
“MyEllipse_MouseEnter”处理程序如下所示:
private void MyEllipse_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
this.MyEllipse.Fill = Brushes.Red;
}
我希望它能够工作,因为它与第一个工作的示例相同。
但是,当我用鼠标输入绘制的椭圆时,我的处理程序没有被调用。但是,当在椭圆上来回多次时,它最终会触发并将椭圆着色为红色。但这只会发生在我绘制的众多椭圆之一上,这似乎也很奇怪。
什么可能导致这种奇怪的行为?
【问题讨论】:
标签: c# wpf events mouseevent