C# 即使AllowDrop设置为true,也禁止在面板上拖放

C# 即使AllowDrop设置为true,也禁止在面板上拖放,c#,winforms,events,drag-and-drop,C#,Winforms,Events,Drag And Drop,我的表单上有一个面板,允许拖放。我已将代码写入DragEnter和DragDrop事件,上次检查时它们工作正常。但是现在当我把一个文件拖到我的面板上时,我得到了禁止的光标,事件不再被触发。我已经查看了整个项目,看看我是否在某个地方禁用了AllowDrop,但我没有 以下是我的事件及其执行的功能: this.pnlNoPostbagFolder.AllowDrop = true; this.pnlNoPostbagFolder.DragDrop += new System.Windows.For

我的表单上有一个面板,允许拖放。我已将代码写入
DragEnter
DragDrop
事件,上次检查时它们工作正常。但是现在当我把一个文件拖到我的面板上时,我得到了禁止的光标,事件不再被触发。我已经查看了整个项目,看看我是否在某个地方禁用了
AllowDrop
,但我没有

以下是我的事件及其执行的功能:

this.pnlNoPostbagFolder.AllowDrop = true;

this.pnlNoPostbagFolder.DragDrop += new System.Windows.Forms.DragEventHandler(this.pnlNoPostbagFolder_DragDrop);
this.pnlNoPostbagFolder.DragEnter += new System.Windows.Forms.DragEventHandler(this.pnlNoPostbagFolder_DragEnter);

private void pnlNoPostbagFolder_DragDrop(object sender, DragEventArgs e)
{
    FileListDragDrop(sender, e);
}

private void pnlNoPostbagFolder_DragEnter(object sender, DragEventArgs e)
{
    FileListDragEnter(sender, e);
}

private void FileListDragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
        e.Effect = DragDropEffects.Copy;
    else
        e.Effect = DragDropEffects.None;
}

private void FileListDragDrop(object sender, DragEventArgs e)
{
    string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);
    for (int i = 0; i < s.Length; i++)
    {
        if (Path.GetExtension(s[i]).Equals(".csv", StringComparison.InvariantCultureIgnoreCase) || Path.GetExtension(s[i]).Equals(".sql", StringComparison.InvariantCultureIgnoreCase))
        {
            string source = s[i];
            string destination = Common.Conf.PostbagFolderLocation + "\\" + Path.GetFileName(s[i]);
            if (File.Exists(destination))
            {
                DialogResult dr = MsgBox.Show(string.Format("A file named '{0}' already exists in the Postbag folder. Overwrite?", Path.GetFileName(s[i])), "File Exists", MsgBox.Buttons.YesNo, MsgBox.Icon.Question);
                if (dr == DialogResult.Yes)
                {
                    File.Copy(source, destination, true);
                    RefreshPostbagFolder();
                }

            }
            File.Copy(source, destination, true);
        }
        else
            MsgBox.Show("File extension not supported", "Add File", MsgBox.Buttons.OK, MsgBox.Icon.Error);
    }
}
this.pnlNoPostbagFolder.AllowDrop=true;
this.pnlNoPostbagFolder.DragDrop+=new System.Windows.Forms.DragEventHandler(this.pnlNoPostbagFolder_DragDrop);
this.pnlNoPostbagFolder.DragEnter+=新系统.Windows.Forms.DragEventHandler(this.pnlNoPostbagFolder\u DragEnter);
私有void pnlNoPostbagFolder_DragDrop(对象发送方,DragEventArgs e)
{
FileListDragDrop(发送方,e);
}
私有void pnlNoPostbagFolder_DragEnter(对象发送方,DragEventArgs e)
{
FileListDragEnter(发送方,e);
}
私有void FileListDragEnter(对象发送方,DragEventArgs e)
{
if(例如Data.GetDataPresent(DataFormats.FileDrop))
e、 效果=DragDropEffects.Copy;
其他的
e、 效果=DragDropEffects。无;
}
私有无效文件列表DragDrop(对象发送方,DragEventArgs e)
{
string[]s=(string[])e.Data.GetData(DataFormats.FileDrop,false);
对于(int i=0;i
您的所有代码似乎都正常,我的机器中的代码没有任何问题,这似乎是UAC问题:


使用调试器。在DragEnter中设置一个断点,确保你正确设置了e.Effect。如果我没有偶然发现这一点,我会失去剩下的头发。