C#文件文件夹拖拽功能的实现

//——————–文件拖拽处理,获取所有文件名—————————– using System.Windows.Forms/// <summary>/// 文件拖进事件处理:/// 获取数据源的链接Link/// </summary>public void dragEnter(DragEventArgs e){if (e.Data.GetDataPresent(DataFormats.FileDrop)) //判断拖来的是否是文件e.Effect = DragDropEffects.Link;//是则将拖动源中的数据连接到控件else e.Effect = DragDropEffects.None;}/// <summary>/// 文件放下事件处理:/// 放下, 另外需设置对应控件的 AllowDrop = true;/// 获取的文件名形如 "d:\1.txt;d:\2.txt"/// </summary>public string dragDrop(DragEventArgs e){string filesName = "";Array file = (System.Array)e.Data.GetData(DataFormats.FileDrop);//将拖来的数据转化为数组存储//判断是否为目录,从目录载入文件if (file.Length == 1){string str = file.GetValue(0).ToString();if (!System.IO.File.Exists(str) && System.IO.Directory.Exists(str)) //拖入的不是文件,,是文件夹{string[] files = System.IO.Directory.GetFiles(str);for (int i = 0; i < files.Length; i++)filesName += (files[i] + (i == files.Length – 1 ? "" : ";"));return filesName;}}//拖入的所有文件int len = file.Length;for (int i = 0; i < len; i++){filesName += (file.GetValue(i).ToString() + (i == file.Length – 1 ? "" : ";"));}return filesName;}//文件拖拽示例://拖拽文件到窗体Form1,获取拖入的所有文件名,Form1上包含一个ListBox1//设置Form1.AllowDrop属性为true//——————–为Form添加文件拖拽处理逻辑—————————————-/// <summary>/// 文件或文件夹拖入/// </summary>private void Form1_DragEnter(object sender, DragEventArgs e){dragEnter(e);}/// <summary>/// drop时,获取拖入的文件名/// </summary>private void Form1_DragDrop(object sender, DragEventArgs e){string filesName = T.dragDrop(e);<span style="white-space:pre"></span>//拖入窗体的文件放下string OpendFilesName = filesName.Split(';'); <span style="white-space:pre"></span>//分割为所有的文件名if (listBox1.Items.Count > 0) listBox1.Items.Clear(); //清空列表foreach(string file in OpendFilesName){String name = System.IO.Path.GetFileName(file);//获取文件名listBox1.Items.Add(name);//添加文件名到列表}}

比谁都感激这份“不能说出的爱”。

C#文件文件夹拖拽功能的实现

相关文章:

你感兴趣的文章:

标签云: