(1)设置目标控件ListDragTarget.AllowDrag=true.表面目标控件ListDragTarget可以拖动(其实就是允许该ListDragTarget之外的项进入该控件可以拖动)。
(2)源控件ListDragSource选中某项并拖动,在本例中用到了MouseDown事件(选中某项),MouseMove事件(拖动)。实际上如果控件有ItemDrag事件的话,只需要在ItemDrag一个事件中完成选中和拖动(比如ListView控件就有ItemDrag事件)。在拖动事件中一般是MouseMove或者ItemDrag事件中调用源控件ListDragSource实例的DoDragDrop方法(实际上用目标控件ListDragTarget实例的DoDragDrop方法)。该方法用于传递源控件中的选中项,及拖动效果DragDropEffects,并触发DragDrop事件(这里触发所有DragDrop事件,不分是源控件的DragDrop事件还是目标控件的DragDrop事件)。
(3)注册目标控件ListDragTarget中两个事件DragEnter和DragDrop事件.DragEnter实现拖动的效果,比如 e.Effect = DragDropEffects.Move(这个一定要设置,不光是拖动效果,也涉及到DragDrop事件能否触发的问题,自己实验总结的,不太理解为什么。)。DragDrop实现接受从源控件ListDragSource拖动过来的数据,并将拖动过来的数据添加到该目标控件ListDragTarget中。