我有一个关于拖放的简单问题。我有一个新的 Win Form 项目,其中的表单已设置为允许使用 AllowDrop = true
放置。还应该提到我正在运行 Windows 7 64 位。
为了确定,我已经订阅了
this.DragDrop += new System.Windows.Forms.DragEventHandler(Form1_DragDrop);
还有。
但是当我运行该应用程序并从我的桌面或资源管理器中拖动任何东西时,它会用鼠标指针图标表示我根本不允许将任何文件拖放到它上面。
我发现了一个与此类似的问题(但 Win Vista),其中的问题是 Visual Studio 以管理员权限运行,而 Windows 资源管理器则没有。但是构建应用程序并运行可执行文件会导致同样的问题。
我过去曾多次这样做,但无法用 Google 搜索我的方法来解决这个问题。我错过了什么?
最佳答案
默认情况下,未指定拖放操作的目标放置效果 (DragDropEffects.None)。因此,在这种情况下,您的控件没有放置事件。 要允许 Control 成为特定数据的拖放操作接收器,您应该指定具体的 DardDropEffect,如下所示(使用 DragEnter 或 DragOver 事件):
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;
}
}
相关 MSDN 文章:Performing a Drag-and-Drop Operation in Windows Forms
关于c# - 拖放至 Windows 窗体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8928611/