private void listViewFolder_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
private void listViewFolder_DragDrop(object sender, DragEventArgs e)
{
try
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
foreach (string src in files)
{
string dest = labelCurFolder.Text + "\\" + Path.GetFileName(src);
if (File.Exists(dest))
{
if (MessageBox.Show($"資料夾已存在同名檔案 {Path.GetFileName(src)},是否取代?",
"確認取代", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
continue;
}
File.Copy(src, dest, true);
}
ListFolder(); // 重新載入清單
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
拖入功能核心:DragEnter 確認資料格式並設定視覺回饋;DragDrop 取得檔案路徑、處理同名覆蓋確認、複製檔案、重新整理 ListView。