2021-11-05 乐帮网
wpf
下面代码在Net Core类型的WPF中实现控制的拖动效果。
首先定义一个控制如下:
<Grid>
<Button Margin="150,60,0,0" Width="90" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left" Name="btn">button</Button>
</Grid>
后台代码如下:
public MainWindow()
{
InitializeComponent();
btn.AddHandler(Button.MouseLeftButtonDownEvent, new MouseButtonEventHandler(btn_MouseLeftButtonDown),true);
btn.AddHandler(Button.MouseMoveEvent, new MouseEventHandler(btn_MouseMove), true);
btn.AddHandler(Button.MouseLeftButtonUpEvent, new MouseButtonEventHandler(btn_MouseLeftButtonUp), true);
}
void btn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Button tmp = (Button)sender;
if (tmp != null)
{
pos = e.GetPosition(tmp);
tmp.CaptureMouse();
tmp.Cursor = Cursors.Hand;
}
}
void btn_MouseMove(object sender, MouseEventArgs e)
{
Trace.WriteLine(e.LeftButton.ToString());
if (e.LeftButton == MouseButtonState.Pressed)
{
Button tmp = (Button)sender;
double dx = e.GetPosition(null).X - pos.X;
double dy = e.GetPosition(null).Y - pos.Y;
tmp.Margin = new Thickness(dx, dy, 0, 0);
}
}
void btn_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Button tmp = (Button)sender;
tmp.ReleaseMouseCapture();
}
最终实现效果:
在按钮上接下鼠标后按钮会跟随移动,松开后按钮不再跟随。
源码下载:链接:https://pan.baidu.com/s/1T7Lrq3AkzyawF0M2Ka5IaQ
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力