拖放不适用于C#Winforms Application

bor*_*egg 11 c# drag-and-drop winforms

我正在尝试创建一个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!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我已将AllowDrop属性设置为true.我已经尝试在Visual Studio中的调试中运行该应用程序.基于其他类似问题的答案,我尝试以管理员身份运行已编译的exe.我已经尝试以管理员身份运行已编译的exe .

但无论我做什么,我都无法触发DragDrop事件.但是,DragEnter事件触发.我错过了什么?

Tea*_*ies 25

你的DragDropEffect设置适当吗?尝试将其放在DragEnter事件处理程序方法中:

    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
        Console.WriteLine("DragEnter!");
        e.Effect = DragDropEffects.Copy;
    }
Run Code Online (Sandbox Code Playgroud)

默认设置为,DragDropEffects.None因此Drop事件不会触发.

  • 哦,天哪,谢谢你/ MADAM!我一直在寻找这个问题,我找不到任何地方. (3认同)

Val*_*oye 14

对于那些读这个的人,因为上面的提示不起作用.

请注意,如果您按照此处的报告运行Visual Studio或您的应用程序"以管理员身份",则拖放将无效:https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/2164233-fix-drag -and拖放到开放文件时运行的-AS-ADM

  • 这个答案被低估了。使用管理员权限从 VS 进行调试将不起作用,但如果您通过文件资源管理器从 /bin/debug 文件夹运行程序,您会发现拖放有效。 (2认同)

小智 6

不要忘记在表单的属性中将 AllowDrop更改为“True”您的代码可能没问题,但如果未将此属性启用为 true,它将无法工作。默认设置为 false。