C# WinForm下一步一步实现文件的拖入和拖出

 作者:Eaglet

      在WinForm实现一个类似资源浏览器的功能,需要实现将WinForm中列出的文件拖出到其他应用程序中或者从其他应用程序中将文件拖入到Winform应用中。网上有一些文章介绍这种功能,但都比较零散,缺少一个完整的例子。为此我编写了一个较完整的实现文件拖入和拖出的例子,并撰写此文一步步讲解如果实现类似功能。

  •       步骤1 放置一个 ListView 到 Winform窗体中 并初始化如下属性:

            listView.View = View.Details;
            listView.AllowDrop 
= true;

 

  •   步骤2 撰写一个目录文件列表显示的函数

 IconImageProvider(listViewFolder.SmallImageList,

 listViewFolder.LargeImageList);

C# WinForm下一步一步实现文件的拖入和拖出                itemName.ImageIndex = iconImageProvider.GetIconImageIndex(fileName);
C# WinForm下一步一步实现文件的拖入和拖出
C# WinForm下一步一步实现文件的拖入和拖出                
//Show file size
C# WinForm下一步一步实现文件的拖入和拖出
                System.IO.FileInfo fileInfo = new System.IO.FileInfo(fileName);
C# WinForm下一步一步实现文件的拖入和拖出                
long size = fileInfo.Length;
C# WinForm下一步一步实现文件的拖入和拖出
C# WinForm下一步一步实现文件的拖入和拖出                String strSize;
C# WinForm下一步一步实现文件的拖入和拖出                
if (size < 1024)
        }

 

上面代码中有一段显示图标的代码由于和拖动无关,我就不贴出来了,感兴趣可以下载完整的代码去看。

 

  •    步骤3 为ListView 添加 DragEnter 事件

   DragEnter 事件在其他应用程序拖入的文件进入时判断当前拖动的对象类型,如果是文件类型,则设置拖动响应类型为Copy.

C# WinForm下一步一步实现文件的拖入和拖出        private void listViewFolder_DragEnter(object sender, DragEventArgs e)
        }

 

 

  •    步骤4 为ListView 添加 DragDrop 事件
DragDrop 事件在这里完成将其他应用程序拖入的文件拷贝到Winform应用当前的目录中。
C# WinForm下一步一步实现文件的拖入和拖出        private void listViewFolder_DragDrop(object sender, DragEventArgs e)
{

.Format(

System.IO.Path.GetFileName(srcfile)),

 

                              DialogResult.Yes)

 {

C# WinForm下一步一步实现文件的拖入和拖出                            continue;
C# WinForm下一步一步实现文件的拖入和拖出                        }

C# WinForm下一步一步实现文件的拖入和拖出                    }

C# WinForm下一步一步实现文件的拖入和拖出
C# WinForm下一步一步实现文件的拖入和拖出                    System.IO.File.Copy(srcfile, destFile, 
true);
C# WinForm下一步一步实现文件的拖入和拖出                }

C# WinForm下一步一步实现文件的拖入和拖出
C# WinForm下一步一步实现文件的拖入和拖出                
//List current folder
C# WinForm下一步一步实现文件的拖入和拖出
                ListFolder();
C# WinForm下一步一步实现文件的拖入和拖出            }

C# WinForm下一步一步实现文件的拖入和拖出            
catch (Exception e1)
        }

 

  完成上述4步后,拖入功能就实现了。下面步骤完成拖出功能

  •    步骤5 为ListView 添加 ItemDrag 事件

   这个事件在ListView 的Item被拖动时响应,我们利用这个事件将当前选中的item对应的文件名复制到拖动数据中,

并调用窗体的DoDragDrop方法告知窗体现在开始做拖放操作。

 

C# WinForm下一步一步实现文件的拖入和拖出        private void listViewFolder_ItemDrag(object sender, ItemDragEventArgs e)
    }

 

完成了步骤5,拖出功能也实现了。

下面是完整代码下载地址

源代码下载 

 


相关文章: