拖放到Windows窗体问题

Blu*_*doo 4 .net c# drag-and-drop winforms windows-7-x64

我有什么应该是关于拖拽的一个简单问题.我有一个新的Win Form项目,其中表单已设置为允许使用drop AllowDrop = true.还应该提一下我运行Windows 7 64位.

只是为了确定,我订阅了

this.DragDrop += new System.Windows.Forms.DragEventHandler(Form1_DragDrop);
Run Code Online (Sandbox Code Playgroud)

同样.

但是当我运行应用程序并从我的桌面或资源管理器中拖动任何内容时,它会用鼠标指针图标指示我不允许删除任何文件.

我找到了类似这样的问题(但是Win Vista),问题是Visual Studio运行的是管理器priveleges,而Windows资源管理器则没有.但是构建应用程序并运行可执行文件会导致同样的问题.

我过去曾多次这样做过,而谷歌也无法解决这个问题.我错过了什么?

Dmi*_*ryG 7

默认情况下,未指定拖放操作的目标拖放效果(DragDropEffects.None).因此,在这种情况下,您的控件没有丢弃事件.要允许Control作为特定数据的拖放操作接收器,您应该指定具体的DardDropEffect,如下所示(使用DragEnterDragOver事件):

void Form1_DragDrop(object sender, DragEventArgs e) {
    object data = e.Data.GetData(DataFormats.FileDrop);
}
void Form1_DragEnter(object sender, DragEventArgs e) {
    if(e.Data.GetDataPresent(DataFormats.FileDrop)) {
        e.Effect = DragDropEffects.Copy;
    }
}
Run Code Online (Sandbox Code Playgroud)

相关MSDN文章:在Windows窗体中执行拖放操作