c # drag drop DataObject - PullRequest
       1

c # drag drop DataObject

1 голос
/ 20 мая 2011

Я использую C # 2.0, и я создал дерево обозревателя, из которого я могу перетаскивать информацию в форму окна. прямо сейчас, когда я перетаскиваю из дерева, которое я использую, оно выполняет DoDragDrop(selectedpath, DragDropEffects.Copy);

Когда я ловлю событие в моей основной форме, оно отображается в виде строки. Я могу сделать эту работу, но я хочу, чтобы она работала так же, как если бы я перетащил файл из окна Windows Explorer, как показано ниже

   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 Ответ

1 голос
/ 20 мая 2011

DoDragDrop и DragDropEffects.Copy не будут действовать на вашем диске, если только вы им не скажете.DragDropEffects.Copy фактически копирует объект в программе , а не сам файл.

См. Документацию по DragDropEffects.

Вам нужно будет управлять событием OnDragDrop и использовать функцию копирования, например File.Copy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...