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

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

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力