WPF实现控件拖动的示例代码

实现控件拖动的基本原理是对鼠标位置的捕获,同时根据鼠标按键的按下、释放确定控件移动的幅度和时机。

简单示例:

在Grid中有一个Button,通过鼠标事件改编Button的Margin属性,从而改变Button在Grid中的相对位置。

<Grid Name="gd">

<Button Width=90 Height=30 Name="btn">button</Button>

</Grid>

为Button控件绑定三个事件:鼠标按下、鼠标移动、鼠标释放

public SystemMap()

{

InitializeComponent();

btn.MouseLeftButtonDown += btn_MouseLeftButtonDown;

btn.MouseMove += btn_MouseMove;

btn.MouseLeftButtonUp += btn_MouseLeftButtonUp;

}

定义变量+鼠标按下事件

Point pos = new Point();

void btn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

{

Button tmp = (Button)sender;

pos = e.GetPosition(null);

tmp.CaptureMouse();

tmp.Cursor = Cursors.Hand;

}

鼠标移动事件

void btn_MouseMove(object sender, MouseEventArgs e)

{

if (e.LeftButton==MouseButtonState.Pressed)

{

Button tmp = (Button)sender;

double dx = e.GetPosition(null).X - pos.X + tmp.Margin.Left;

double dy = e.GetPosition(null).Y - pos.Y + tmp.Margin.Top;

tmp.Margin = new Thickness(dx, dy, 0, 0);

pos = e.GetPosition(null);

}

}

鼠标释放事件

void btn_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)

{

Button tmp = (Button)sender;

tmp.ReleaseMouseCapture();

}

以上是 WPF实现控件拖动的示例代码 的全部内容, 来源链接: utcz.com/z/358622.html

回到顶部