c#拖放DataObject

时间:2011-05-20 15:13:04

标签: c# .net winforms drag-and-drop

我正在使用C#2.0,我创建了一个资源管理器树,我可以将信息拖到窗体中。现在,当我从即时使用的树视图中拖动时,它会执行DoDragDrop(selectedpath, DragDropEffects.Copy);

当我在mainform中捕获事件时,它被列为字符串。我能够完成这项工作,但我希望它的执行方式与我从Windows资源管理器窗口拖动文件的方式相同,如下所示

   Array name = (Array)e.Data.GetData(DataFormats.FileDrop);
        // Ensure that the list item index is contained in the data.
        if (e.Data.GetDataPresent(typeof(System.String)))
        {

            Object item = (object)e.Data.GetData(typeof(System.String));

            // Perform drag-and-drop, depending upon the effect.
            if (e.Effect == DragDropEffects.Copy ||
                e.Effect == DragDropEffects.Move)
            {

                //// Insert the item.
                //if (indexOfItemUnderMouseToDrop != ListBox.NoMatches)
                //    ListDragTarget.Items.Insert(indexOfItemUnderMouseToDrop, item);
                //else
                //    ListDragTarget.Items.Add(item);

            }
        }

我试过做DoDragDrop(新的DataObject(selectedfile),DragDropEffects.Copy),但那不起作用。

1 个答案:

答案 0 :(得分:1)

DoDragDropDragDropEffects.Copy不会对您的驱动器采取任何操作,除非您告诉他们。 DragDropEffects.Copy的作用实际上是复制程序中的对象 ,而不是文件本身。

请参阅DragDropEffects上的文档。

您需要管理OnDragDrop事件并使用File.Copy等复制功能