【发布时间】:2010-05-17 16:31:29
【问题描述】:
我正在尝试将文件从名为 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;
}
}
【问题讨论】:
-
您的操作系统版本是多少?您是否使用调试器逐步完成此操作以查看您的
DragEnter事件是否正在引发? -
这发生在 XP 和 Win7 中。是的,它正在被提出——我发布的第一个块是我在
MyForm_DragEnter的第一行打破并在即时窗口中做一些事情。
标签: c# winforms drag-and-drop