2015-09-09 1 views
0

У меня есть панель в моей форме, на которой я разрешил перетаскивание. Я написал код DragEnter и DragDrop событий, и они отлично работали в прошлый раз, когда я проверил. Но теперь, когда я перетаскиваю файл поверх своей панели, я получаю запрещенный курсор, и события больше не запускаются. Я просмотрел весь свой проект, чтобы узнать, отключу ли я AllowDrop, но я этого не делаю.Перетаскивание запрещено на панели, хотя AllowDrop имеет значение true

Вот мои события вместе с функциями, которые они выполняют:

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); 
    } 
} 
+0

Используйте отладчик , Установите контрольную точку в DragEnter, убедитесь, что вы правильно установили e.Effect. –

ответ