XAML:
C#:
bool IsMouseDown = false;
Point mousePoint;
object mouseCtrl = null;
private void label1_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
IsMouseDown = true;
mousePoint = e.GetPosition(this.canvas1);
mouseCtrl = sender;
}
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseDown)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point theMousePoint = e.GetPosition(this.canvas1 );
Canvas.SetLeft((UIElement)mouseCtrl, theMousePoint.X - (mousePoint.X - Canvas.GetLeft(((UIElement)mouseCtrl))));
Canvas.SetTop((UIElement)mouseCtrl, theMousePoint.Y - (mousePoint.Y - Canvas.GetTop(((UIElement)mouseCtrl))));
mousePoint = theMousePoint;
}
}
}
private void Window_MouseUp(object sender, MouseButtonEventArgs e)
{
if (IsMouseDown)
{
IsMouseDown = false;
}
}
本文介绍了一个使用WPF实现的简单控件拖动功能。通过XAML定义界面,并利用C#代码处理鼠标事件,实现了Label控件在Canvas画布上的拖拽移动。

306

被折叠的 条评论
为什么被折叠?



