Friday 15 August 2014

c# - Unable to move files into devexpress file treelist -



c# - Unable to move files into devexpress file treelist -

i have created file treelist in winforms application. files , folders displayed in right way. when seek drag file pc (for ex. desktop) application draggednode , target node null. moving folders within application works fine. how alter application can drag files folders in application?

code:

class filelisthelper { string rootpath; treelist tree; private devexpress.xtratreelist.columns.treelistcolumn treelistcolumn1; private devexpress.xtratreelist.columns.treelistcolumn treelistcolumn2; private devexpress.xtratreelist.columns.treelistcolumn treelistcolumn3; private devexpress.xtratreelist.columns.treelistcolumn treelistcolumn4; private devexpress.xtratreelist.columns.treelistcolumn treelistcolumn5; treelistmenu foldermenu; public filelisthelper(treelist tree) { tree = tree; initcolumns(); tree.beforeexpand += new devexpress.xtratreelist.beforeexpandeventhandler(this.treelist1_beforeexpand); tree.afterexpand += new devexpress.xtratreelist.nodeeventhandler(this.treelist1_afterexpand); tree.aftercollapse += new devexpress.xtratreelist.nodeeventhandler(this.treelist1_aftercollapse); tree.calcnodedragimageindex += new devexpress.xtratreelist.calcnodedragimageindexeventhandler(this.treelist1_calcnodedragimageindex); tree.dragdrop += new system.windows.forms.drageventhandler(this.treelist1_dragdrop); tree.doubleclick += new system.eventhandler(this.treelist1_doubleclick); tree.popupmenushowing += new popupmenushowingeventhandler(tree_popupmenushowing); tree.dragenter += new drageventhandler(this.treelist1_dragenter); //added shows icons tree.cellvaluechanged += new cellvaluechangedeventhandler(tree_cellvaluechanged); initdata(); foldermenu = new treelistmenu(tree); foldermenu.items.add(new dxmenuitem("create new folder",menuaddclick)); foldermenu.items.add(new dxmenuitem("delete", menudeleteclick)); } #region dragenter void treelist1_dragenter(object sender,drageventargs e) { if (e.data.getdatapresent("filegroupdescriptor")) { e.effect = dragdropeffects.all; } else if (e.data.getdatapresent(dataformats.filedrop)) { e.effect = dragdropeffects.copy; //ensure filegroupdescriptor nowadays before allowing drop } else if (e.data.getdatapresent("renprivatemessages")) { e.effect = dragdropeffects.all; } else { e.effect = dragdropeffects.move; } } #endregion dragenter #region rename void tree_cellvaluechanged(object sender, cellvaluechangedeventargs e) { if (e.column.caption =="name") { if (e.node["type"] == "folder") { directoryinfo di = e.node["info"] directoryinfo; di.moveto(di.parent.fullname+"//"+e.value); } else { fileinfo fi = e.node["info"] fileinfo; fi.moveto(fi.directory.fullname + "//" + e.value); } } } #endregion #region popup menu void menu_click(object sender, eventargs e) { throw new exception("the method or operation not implemented."); } void tree_popupmenushowing(object sender, popupmenushowingeventargs e) { treelistnode node = tree.calchitinfo(e.point).node; if (node != null) { e.menu = foldermenu; e.menu.tag = node; //e.menu.items.add(new dxmenuitem("create new folder")); } } void menuaddclick(object sender, eventargs e) { directoryinfo di; int parentid = -1; treelistnode curentnode = foldermenu.tag treelistnode; treelistnode folderparentnode; if (curentnode["type"] == "folder") folderparentnode = curentnode; else folderparentnode = curentnode.parentnode; if (folderparentnode == null) { di = new directoryinfo(rootpath); } else { parentid = folderparentnode.id; di=folderparentnode["info"] directoryinfo; } directoryinfo newdirectory = directory.createdirectory(di.fullname + "\\new folder"); if (newdirectory != null) { tree.focusednode = tree.appendnode(new object[] { newdirectory.fullname, newdirectory.name, "folder", null, newdirectory }, parentid); } tree.focusedcolumn = tree.columns["name"]; tree.showeditor(); } void menudeleteclick(object sender, eventargs e) { treelistnode curentnode = foldermenu.tag treelistnode; (curentnode["info"] filesysteminfo).delete(); tree.deletenode(curentnode); } #endregion #region initializing treelist void initcolumns() { this.treelistcolumn1 = new devexpress.xtratreelist.columns.treelistcolumn(); this.treelistcolumn2 = new devexpress.xtratreelist.columns.treelistcolumn(); this.treelistcolumn3 = new devexpress.xtratreelist.columns.treelistcolumn(); this.treelistcolumn4 = new devexpress.xtratreelist.columns.treelistcolumn(); this.treelistcolumn5 = new devexpress.xtratreelist.columns.treelistcolumn(); this.treelistcolumn1.caption = "fullname"; this.treelistcolumn1.fieldname = "fullname"; this.treelistcolumn2.caption = "name"; this.treelistcolumn2.fieldname = "name"; this.treelistcolumn2.visibleindex = 0; this.treelistcolumn2.visible = true; this.treelistcolumn2.sortorder = sortorder.ascending; this.treelistcolumn2.sortindex = 1; this.treelistcolumn3.caption = "type"; this.treelistcolumn3.fieldname = "type"; this.treelistcolumn3.visibleindex = 1; this.treelistcolumn3.visible = true; this.treelistcolumn3.sortorder = sortorder.descending; this.treelistcolumn3.sortindex = 0; this.treelistcolumn3.optionscolumn.allowedit = false; this.treelistcolumn4.appearancecell.options.usetextoptions = true; this.treelistcolumn4.appearancecell.textoptions.halignment = devexpress.utils.horzalignment.far; this.treelistcolumn4.caption = "size(bytes)"; this.treelistcolumn4.fieldname = "size"; this.treelistcolumn4.visibleindex = 2; this.treelistcolumn4.visible = true; this.treelistcolumn4.optionscolumn.allowedit = false; this.treelistcolumn5.caption = "treelistcolumn5"; this.treelistcolumn5.fieldname = "info"; this.treelistcolumn5.name = "treelistcolumn5"; tree.columns.addrange(new devexpress.xtratreelist.columns.treelistcolumn[] { this.treelistcolumn1, this.treelistcolumn2, this.treelistcolumn3, this.treelistcolumn4, this.treelistcolumn5}); } private void initdata() { //int currentincidentid=2; //rootpath = directory.getdirectoryroot(directory.getcurrentdirectory()); rootpath = "c:\\data\\98-programmdata\\maintenance\\dossier\\"/*+currentincidentid*/; initfolders(rootpath, null); } private void initfolders(string path, treelistnode pnode) { tree.beginunboundload(); treelistnode node; directoryinfo di; seek { string[] root = directory.getdirectories(path); foreach (string s in root) { seek { di = new directoryinfo(s); node = tree.appendnode(new object[] { s, di.name, "folder", null, di }, pnode); node.stateimageindex = 0; node.haschildren = hasfiles(s); if (node.haschildren) node.tag = true; } grab { } } } grab { } initfiles(path, pnode); tree.endunboundload(); } private void initfiles(string path, treelistnode pnode) { treelistnode node; fileinfo fi; seek { string[] root = directory.getfiles(path); foreach (string s in root) { fi = new fileinfo(s); node = tree.appendnode(new object[] { s, fi.name, "file", fi.length, fi }, pnode); node.stateimageindex = 1; node.haschildren = false; } } grab { } } private void treelist1_filternode(object sender, devexpress.xtratreelist.filternodeeventargs e) { treelist tree = sender treelist; if (string.isnullorempty(tree.findfiltertext)) return; e.node.visible = isnodevisible(e.node); e.handled = true; } private bool isnodevisible(treelistnode node) { if (node.parentnode == null) { foreach (treelistcolumn column in node.treelist.visiblecolumns) { object val = node[column.fieldname]; if (val != null && val.tostring().toupper().equals(node.treelist.findfiltertext.toupper())) homecoming true; } homecoming false; } homecoming isnodevisible(node.parentnode); } private bool hasfiles(string path) { string[] root = directory.getfiles(path); if (root.length > 0) homecoming true; root = directory.getdirectories(path); if (root.length > 0) homecoming true; homecoming false; } private void treelist1_beforeexpand(object sender, devexpress.xtratreelist.beforeexpandeventargs e) { if (e.node.tag != null) { cursor currentcursor = cursor.current; cursor.current = cursors.waitcursor; initfolders(e.node.getdisplaytext("fullname"), e.node); e.node.tag = null; cursor.current = currentcursor; } } private void treelist1_afterexpand(object sender, devexpress.xtratreelist.nodeeventargs e) { if (e.node.stateimageindex != 1) e.node.stateimageindex = 2; } private void treelist1_aftercollapse(object sender, devexpress.xtratreelist.nodeeventargs e) { if (e.node.stateimageindex != 1) e.node.stateimageindex = 0; } #endregion #region dragging private void treelist1_calcnodedragimageindex(object sender, devexpress.xtratreelist.calcnodedragimageindexeventargs e) { if (e.node[treelistcolumn3].tostring() == "folder") { e.imageindex = 0; } if (e.node[treelistcolumn3].tostring() == "file") { if (e.node.parentnode == tree.focusednode.parentnode) { e.imageindex = -1; return; } if (e.imageindex == 0) if (e.node.id > tree.focusednode.id) e.imageindex = 2; else e.imageindex = 1; } } private void treelist1_dragdrop(object sender, drageventargs e) { treelistnode draggednode = e.data.getdata(typeof(treelistnode)) treelistnode; treelistnode tagretnode = tree.viewinfo.gethittest(tree.pointtoclient(new point(e.x, e.y))).node; if (tagretnode == null || draggednode == null) return; if (tagretnode[treelistcolumn3].tostring() == "file") { if (tagretnode.parentnode == draggednode.parentnode) return; moveinfolder(draggednode, tagretnode.parentnode); } else { moveinfolder(draggednode, tagretnode); } e.effect = dragdropeffects.none; } void moveinfolder(treelistnode sourcenode, treelistnode destnode) { tree.movenode(sourcenode, destnode); if (sourcenode == null) return; filesysteminfo sourceinfo = sourcenode[treelistcolumn5] filesysteminfo; string sourcepath = sourceinfo.fullname; string destpath; if (destnode == null) destpath = rootpath + sourceinfo.name; else { directoryinfo destinfo = destnode[treelistcolumn5] directoryinfo; destpath = destinfo.fullname + "\\" + sourceinfo.name; } if (sourceinfo directoryinfo) directory.move(sourcepath, destpath); else file.move(sourcepath, destpath); sourcenode[treelistcolumn5] = new directoryinfo(destpath); } #endregion #region executing private void treelist1_doubleclick(object sender, eventargs e) { if ((sender treelist).focusednode[treelistcolumn3].tostring() == "file") process.start(((sender treelist).focusednode[treelistcolumn5] filesysteminfo).fullname, null); } #endregion }

these 2 lines null:

treelistnode draggednode = e.data.getdata(typeof(treelistnode)) treelistnode; treelistnode tagretnode = tree.viewinfo.gethittest(tree.pointtoclient(new point(e.x, e.y))).node;

how prepare this?

c# winforms devexpress

No comments:

Post a Comment