程序员经常要实现拖动控件的功能,一般实现这个功能,都要注册事件,然后写MouseMove的代码,
Point point = Point.Empty; control.MouseDown += control_MouseDown; control.MouseMove += control_MouseMove; control.MouseLeave += control_MouseLeave;
如果程序的很多地方都有这个逻辑的话,那么代码就会有一大部分的重复了。
在网上如果你搜索控件拖动的话,大部分代码都是上面的代码,重复的逻辑,重复的故事。
于是我想,能不能写一个帮助类,当需要拖动的时候,只要调用EnableDrag方法就行了,如下:
private void Form1_Load(object sender, EventArgs e) { DraggerHelper.EnableDrag(button1); DraggerHelper.EnableDrag(label1); DraggerHelper.DisableDrag(button1); DraggerHelper.DisableDrag(label1); }
要实现这个效果,需要一些小技巧,当然,这些已经封装进了DraggerHelper 类。
完整的代码如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
完整的代码
这里是如何使用DragHelper的例子:
private void Form1_Load(object sender, EventArgs e) { DraggerHelper.EnableDrag(button1); DraggerHelper.EnableDrag(label1); DraggerHelper.DisableDrag(button1); DraggerHelper.DisableDrag(label1); } private void button1_Click(object sender, EventArgs e) { if (label1.IsControlCanDrag()) { label1.DisableDrag(); } else { label1.EnableDrag(); } }
完整的代码:ControlDragger.rar
本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2013/03/20/2970433.html,如需转载请自行联系原作者