Перетащите URL-адрес файла из элемента управления winforms во внешнее приложение. - PullRequest
1 голос
/ 27 июня 2011

Мне нужно перетащить строки, представляющие файлы из таблицы данных, и иметь возможность перетаскивать их в любое приложение Windows, как если бы я выполнял перетаскивание из проводника Windows, и я немного запутался в отношении процедуры, которой необходимо следовать.

На данный момент у меня есть следующий обработчик событий

private void gridFiles_MouseDown(object sender, MouseEventArgs e)
{
    gridFiles.DoDragDrop(gridFiles.SelectedRows.Count, DragDropEffects.Move);
}

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

1 Ответ

0 голосов
/ 28 июня 2011

Я наконец понял это.Процедура выглядит следующим образом:

  • Создайте объект DataObject, который будет содержать массив путей к файлам.
  • Установите тип объекта DataObject равным FileDrop
  • Передайте объект DataObject объектуПроцедура DoDragDrop

Пример кода:

if (is_in_selection)
{
    sel_rows = from DataGridViewRow r in gridFiles.SelectedRows select r;
    var files = (from DataGridViewRow r in gridFiles.SelectedRows select all_files[r.Index]);
    string[] files_paths = files.Select((f) => f.FullPathName).ToArray();
    var data = new DataObject(DataFormats.FileDrop, files_paths);
    gridFiles.DoDragDrop(data, DragDropEffects.Copy);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...