Winforms中如何支持拖放文件夹?
Posted
技术标签:
【中文标题】Winforms中如何支持拖放文件夹?【英文标题】:How do I support dragging and dropping a folder in Winforms? 【发布时间】:2012-06-29 01:41:02 【问题描述】:我想知道如何拖放文件夹并获取其名称。我已经知道如何处理文件,但我不确定如何修改它以便也能够拖动文件夹。以下是删除文件时触发的事件代码:
private void checkedListBox_DragDrop(object sender, DragEventArgs e)
if (e.Data.GetDataPresent(DataFormats.FileDrop))
// NB: I'm only interested in the first file, even if there were
// multiple files dropped
string fileName = ((string[])e.Data.GetData(DataFormats.FileDrop))[0];
【问题讨论】:
另见***.com/questions/68598 How do I distinguish a file or a folder in a drag and drop event in c#?的可能重复 我已经用谷歌搜索过了。我对基本的拖放不感兴趣,但删除一个文件夹并获取它的名称,即使它是空的。编辑:看看 Sixlettervariables 的链接。 【参考方案1】:您可以测试路径是否为文件夹,并在您的DragEnter
handler 中,有条件地更改Effect
:
void Target_DragEnter(object sender, DragEventArgs e)
DragDropEffects effects = DragDropEffects.None;
if (e.Data.GetDataPresent(DataFormats.FileDrop))
var path = ((string[])e.Data.GetData(DataFormats.FileDrop))[0];
if (Directory.Exists(path))
effects = DragDropEffects.Copy;
e.Effect = effects;
【讨论】:
我只是写了我自己的答案,但既然你提供了我的链接,我会接受你的。谢谢! :)以上是关于Winforms中如何支持拖放文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
WinForms 互操作,从 WinForms 拖放 -> WPF