【发布时间】:2014-12-25 01:08:37
【问题描述】:
我正在尝试创建一个可以将文件/文件夹拖放到其上的 Windows 窗体。
我在 WinForms 应用程序中有以下代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
Debug.Print("DragEnter");
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
MessageBox.Show("Dropped!");
}
}
我已将 AllowDrop 属性设置为 true。 我尝试在 Visual Studio 中调试运行应用程序。 根据对其他类似问题的回答,我尝试以管理员身份运行编译后的 exe。 我试过以管理员身份运行编译的 exe not。
但无论我做什么,我都无法触发 DragDrop 事件。但是,DragEnter 事件确实 会触发。我错过了什么?
【问题讨论】:
-
您是否检查过您是否意外丢失了 DragDrop 事件和 Form1_DragDrop 处理程序之间的连接?对不起,如果你这样做了。
-
是普通表单,还是添加了控件?如果您拖放到表单的控件上,则该控件将负责。
-
如果您以管理员身份运行 Visual Studio/您的应用程序并且 Windows 资源管理器在您的普通帐户下运行,则拖放将不起作用。
-
@Archlight -- 有谁知道为什么会存在这样的荒谬之处?
-
安全。它曾经是 COM 通信封装的,所以它看起来像 Win32 api,如果允许在盒子上运行的一个用户访问另一个用户的内存,那将是一个坏主意......今天的情况可能相同。
标签: c# winforms drag-and-drop