Я пытаюсь перетащить файлы в свое приложение из программы под названием Locate32 (что, кстати, здорово). Вот что происходит:
e.Data.GetFormats()
{string[7]}
[0]: "FileDrop"
[1]: "FileNameW"
[2]: "FileName"
[3]: "FileNameMap"
[4]: "FileNameMapW"
[5]: "Shell IDList Array"
[6]: "Shell Object Offsets"
DataFormats.FileDrop
"FileDrop"
e.Data.GetDataPresent(DataFormats.FileDrop)
false
Почему e.Data.GetDataPresent(DataFormats.FileDrop)
возвращает false
, хотя FileDrop явно является одним из форматов, перечисленных как «доступные»?
Если я сделаю e.Data.GetData(DataFormats.FileDrop)
, я получу список с именами файлов, как и должен. Кроме того, перетаскивание отлично работает из проводника Windows.
Вот код для моего обработчика DragEnter:
private void MyForm_DragEnter(object sender, DragEventArgs e) {
if(e.Data.GetDataPresent(DataFormats.FileDrop)) {
e.Effect = DragDropEffects.Copy;
} else {
e.Effect = DragDropEffects.None;
}
}