我有一块画布,里面有一个形状。该画布具有一个MouseLeftButtonDown
事件处理程序。然后我去将画布中的形状移到新位置,但是什么也没发生。
以下是添加形状的方式:
public MainWindow()
{
InitializeComponent();
Rectangle ShapeRect = new Rectangle() { Width=10,Height=10,Fill=Brushes.Blue};
Canvas_1.Children.Add(ShapeRect);
}
这是事件处理程序:
private void Canvas_1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Canvas c = Canvas_1;
var firstchild = c.Children[0];
var RectCopy = c.Children.OfType<Rectangle>().FirstOrDefault();
Canvas.SetTop(RectCopy, Canvas.GetTop(RectCopy) + 500);
Canvas.SetLeft(RectCopy, Canvas.GetLeft(RectCopy) + 500);
}
我已经测试了代码,它没有错误,所有行都可以运行,但是显然没有效果。我认为这是由于RectCopy
不是ShapeRect
造成的。欢迎任何其他解决方案或答案。谢谢。
答案 0 :(得分:0)
在Initialize方法的底部添加以下行:
Canvas.SetTop(ShapeRect, 0);
Canvas.SetLeft(ShapeRect, 0);
到达处理程序时,Canvas.GetTop(...)
的值为NaN
。