C# 无法将文件移动到devexpress文件树列表中

C# 无法将文件移动到devexpress文件树列表中,c#,winforms,devexpress,C#,Winforms,Devexpress,我在WinForms应用程序中创建了一个文件树列表。文件和文件夹以正确的方式显示。但是,当我尝试将文件从pc(例如从桌面)拖到应用程序时,draggednode和目标节点为空。在我的应用程序中移动文件夹效果很好。如何更改我的应用程序,使我可以将文件拖动到应用程序中的文件夹中 代码: 这两行为空: TreeListNode draggedNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode; TreeListNo

我在WinForms应用程序中创建了一个文件树列表。文件和文件夹以正确的方式显示。但是,当我尝试将文件从pc(例如从桌面)拖到应用程序时,draggednode和目标节点为空。在我的应用程序中移动文件夹效果很好。如何更改我的应用程序,使我可以将文件拖动到应用程序中的文件夹中

代码:

这两行为空:

     TreeListNode draggedNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
     TreeListNode tagretNode = Tree.ViewInfo.GetHitTest(Tree.PointToClient(new Point(e.X, e.Y))).Node;

如何修复此问题?

您是否在这两行上设置了断点,以查看实际的类型,以及您的PointToClient是否引用了您的TreeView?是的,我在它们上设置了断点。两者都是null,这就是问题所在,因为方法返回null。PointToClient正在引用我的树视图。在我的应用程序中,拖放可以工作,但当我尝试从应用程序外部添加文件/文件夹时,两个节点都为空。我的意思是
e.Data
在该时间点也为空。如果不是,它是什么类型?如果我检查e.Data,它不是空的。它的类型是:“System.Windows.Forms.DataObject”。此时的e.Data包含DataFormat.FileDrop,它本质上是一个字符串数组,带有指向已删除文件/文件夹的路径(检查
e.Data.GetData(System.Windows.Forms.DataFormats.FileDrop)。GetType().ToString()
。您需要以这种方式解析它,而不是直接将它们转换为TreeListNode。为什么Tree.PointToClient不能正确识别树列表的节点,您需要进一步调查
     TreeListNode draggedNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
     TreeListNode tagretNode = Tree.ViewInfo.GetHitTest(Tree.PointToClient(new Point(e.X, e.Y))).Node;