两种方式实现控件动态拖动效果比较

本文介绍在WinForm中实现控件拖动的两种方法:一种是利用MouseDown和MouseMove事件实现实时拖动;另一种是通过DoDragDrop方法实现最终的拖动效果。前者适用于自由拖动场景,后者则适合有序容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在WinForm上拖动控件有两种方式可以实现,方法一通过控件的MouseDown,MouseMove事件实现,可以看到控件随鼠标实时移动(参考http://blog.youkuaiyun.com/nj2011zy/article/details/73832610)。这种方法适用于无位置排列的容器内子控件的移动,如Panel容器,优点是可以实时看到控件位置随鼠标移动,清晰可显,一般用于控件在容器(无位置排列)内自由拖动,使用于场景的构建,相当于继承原控件,新建可移动的控件。

方法二通过DoDragDrop方法实现控件拖动效果(参考http://blog.youkuaiyun.com/nj2011zy/article/details/73943953)。这种方法适用于有位置排序的容器或者有子项的控件,如FlowLayoutPanel容器、TreeView、ListView、ListBox等控件。该方法不能看到子控件或子项随鼠标实时移动,只能实现最终的移动效果,但是可以从鼠标的形状知道拖动的效果(移动、复制、滚动、所有等)。需要设定容器的属性AllowDrop=true,方可实现拖动。此种方法不涉及继承,相当于开通了容器"可拖动"功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值