您的位置:首页 > 其它

Silverlight实例开发 简单的拖拽效果

2010-03-31 16:37 429 查看
Silverlight 2完美征程学习笔记
拖拽效果分为3个步骤
按下鼠标,触发MouseLeftButtonDown事件,选择要拖动的对象
移动鼠标,触发MouseMove事件,移动选择的对象
放开鼠标,触发MouseLeftButtonUp事件,停止捕捉事件
页面代码:














 

开始拖放操作,实现MouseLeftButtonDown事件的处理

private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
mousePosition = e.GetPosition(null);
trackingMouseMove = true;

if(null!=element)
{
element.CaptureMouse();
element.Cursor = Cursors.Hand;
}
txtStatus.Text = "MouseLeftButtonDown";
}


移动对象,实现 MouseMove事件处理程序,计算元素的位置并更新,同时更新鼠标的位置

private void StackPanel_MouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;

if(trackingMouseMove)
{
double deltaV = e.GetPosition(null).Y - mousePosition.Y;
double deltaH = e.GetPosition(null).X - mousePosition.X;
double newTop = deltaV + (double) element.GetValue(Canvas.TopProperty);
double newLeft = deltaH + (double) element.GetValue(Canvas.LeftProperty);

element.SetValue(Canvas.TopProperty, newTop);
element.SetValue(Canvas.LeftProperty, newLeft);
mousePosition = e.GetPosition(null);
}

txtStatus.Text = "Mouse Moving ……";
}


 

完成拖放操作,释放鼠标,实现MouseLeftButtonUp事件处理程序

private void StackPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
trackingMouseMove = false;
element.ReleaseMouseCapture();

mousePosition.X = mousePosition.Y = 0;
element.Cursor = null;

txtStatus.Text = "ReleaseMouse";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: