I. Description
Using the dev control, TreeList1 drag to TreeList2
Second, the attribute
Allow drag and drop
Treelist1.allowdrop = true;
Treelist2.allowdrop = true;
Allow multi-line selection
TreeList1.OptionsSelection.MultiSelect = true;
Third, the Code
#regionTree drag and drop operationTreelisthitinfo Downhitinfo=NULL; #regionDrag outPrivate voidTreelist1_mousemove (Objectsender, MouseEventArgs e) {treelist treelist= Sender astreelist; if(E.button = = MouseButtons.Left && Downhitinfo! =NULL) { if(TreeList1.Selection.Count = =0) return; Size dragsize=systeminformation.dragsize; Rectangle Dragrect=NewRectangle (NewPoint (Downhitinfo.mousepoint.x-dragsize.width/2, Downhitinfo.mousepoint.y-Dragsize.height/2), dragsize); if(!dragrect.contains (NewPoint (e.x, e.y))) {List<TreeListNode> node =NewList<treelistnode>(); foreach(Treelistnode Ninchtreelist1.selection) {node. ADD (n); } treelist. DoDragDrop (Downhitinfo.node, DragDropEffects.Move); Downhitinfo=NULL; DevExpress.Utils.DXMouseEventArgs.GetMouseArgs (E). Handled=true; } } } Private voidTreelist1_mousedown (Objectsender, MouseEventArgs e) {treelist treelist= Sender astreelist; Downhitinfo=NULL; Treelisthitinfo Hitinfo= Treelist. Calchitinfo (NewPoint (e.x, e.y)); if(Control.modifierkeys! = Keys.none)return; if(E.button = =mousebuttons.left) {downhitinfo=Hitinfo; } } #endregion #regionDrag inPrivate voidTreelist2_dragover (Objectsender, DragEventArgs e) {treelist treelist= Sender astreelist; if(Treelist! =NULL) {e.effect=DragDropEffects.Move; } } Private voidTreelist2_dragenter (Objectsender, DragEventArgs e) {E.effect=DragDropEffects.Move; } Private voidTreelist2_dragdrop (Objectsender, DragEventArgs e) {List<TreeListNode> nodes = e.Data.GetData (typeof(list<treelistnode>)) asList<treelistnode>; Treelist Grid= Sender astreelist; DataTable Table= Grid. DataSource asDataTable; if(Nodes! =NULL&& nodes. Count >0&& Table! =NULL) { foreach(Treelistnode nodeinchnodes) {TREELIST1.NODES.ADD (node); } } } #endregion #endregion
Dev Treelist Drag