WPF实现控件拖动的示例代码
程序员文章站
2023-12-17 09:56:52
实现控件拖动的基本原理是对鼠标位置的捕获,同时根据鼠标按键的按下、释放确定控件移动的幅度和时机。
简单示例:
在grid中有一个button,通过鼠标事件改...
实现控件拖动的基本原理是对鼠标位置的捕获,同时根据鼠标按键的按下、释放确定控件移动的幅度和时机。
简单示例:
在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(); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。