【发布时间】:2010-11-18 00:07:45
【问题描述】:
我有以下代码
-
xaml
<Canvas x:Name="LayoutRoot" > <Rectangle Canvas.Left="40" Canvas.Top="40" Width="20" Height="20" Name="rec" Fill="Red" MouseLeftButtonDown="rec_MouseLeftButtonDown" MouseMove="rec_MouseMove" /> </Canvas> 隐藏代码
公共部分类 MainPage : UserControl { 公共主页() { 初始化组件(); }
public Point LastDragPosition { get; set; }
private bool isDragging;
private void rec_MouseMove(object sender, MouseEventArgs e)
{
if(!isDragging)
{
return;
}
var position = e.GetPosition(rec as UIElement);
var newPosition = new Point(
Canvas.GetLeft(rec) + position.X - LastDragPosition.X,
Canvas.GetTop(rec) + position.Y - LastDragPosition.Y);
Canvas.SetLeft(rec, newPosition.X);
Canvas.SetTop(rec, newPosition.Y);
LastDragPosition = e.GetPosition(rec as UIElement);
}
private void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
isDragging = true;
LastDragPosition = e.GetPosition(sender as UIElement);
rec.CaptureMouse();
}
}
这个问题是如果鼠标左键按下,矩形会跟随鼠标,但我希望即使鼠标左键没有按下,矩形也会移动。它可以工作,但是如果您移动鼠标非常缓慢。如果您快速移动鼠标,则矩形停止移动(鼠标捕获是否丢失?)
干杯,
【问题讨论】:
-
实现鼠标进入和离开事件,而不是向下和向上。这将起作用。