У меня есть панель в моей форме, на которой я разрешил перетаскивание. Я написал код 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);
}
}
Используйте отладчик , Установите контрольную точку в DragEnter, убедитесь, что вы правильно установили e.Effect. –