WPF实现控件拖动的示例代码
实现控件拖动的基本原理是对鼠标位置的捕获,同时根据鼠标按键的按下、释放确定控件移动的幅度和时机。
简单示例:
在Grid中有一个Button,通过鼠标事件改编Button的Margin属性,从而改变Button在Grid中的相对位置。
button
为Button控件绑定三个事件:鼠标按下、鼠标移动、鼠标释放
publicSystemMap()
{
InitializeComponent();
btn.MouseLeftButtonDown+=btn_MouseLeftButtonDown;
btn.MouseMove+=btn_MouseMove;
btn.MouseLeftButtonUp+=btn_MouseLeftButtonUp;
}
定义变量+鼠标按下事件
Pointpos=newPoint();
voidbtn_MouseLeftButtonDown(objectsender,MouseButtonEventArgse)
{
Buttontmp=(Button)sender;
pos=e.GetPosition(null);
tmp.CaptureMouse();
tmp.Cursor=Cursors.Hand;
}
鼠标移动事件
voidbtn_MouseMove(objectsender,MouseEventArgse)
{
if(e.LeftButton==MouseButtonState.Pressed)
{
Buttontmp=(Button)sender;
doubledx=e.GetPosition(null).X-pos.X+tmp.Margin.Left;
doubledy=e.GetPosition(null).Y-pos.Y+tmp.Margin.Top;
tmp.Margin=newThickness(dx,dy,0,0);
pos=e.GetPosition(null);
}
}
鼠标释放事件
voidbtn_MouseLeftButtonUp(objectsender,MouseButtonEventArgse)
{
Buttontmp=(Button)sender;
tmp.ReleaseMouseCapture();
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。