用WPF做了一个图片查看器。初始化程序后,通过一个Listbox 将指定文件夹的Image加入界面上,并可以对加载的图片进行一系列的操作。比如删除操作。
之前在文章http://blog.csdn.net/wangshubo1989/article/details/46560375中讲过,如何解决Image控件的BitmapImage资源占用问题。解决了该问题,就可以对加载到界面上的图像进行删除操作。
C#自带的删除操作为:
File.Delete方法, 命名空间为System.IO 函数原型如下:
public static void Delete(string path), 其中path为要删除的文件的名称。
所以可以使用:
File.Delete("D:\\123.PNG"); // 删除D盘中的名为123的图片
但是问题来了,我们进入电脑回收站并未找到名为123.png的图片,说明 File.Delete方法将指定路径的文件彻底删除了,即shift+delete操作
如果我们需要重新使用被删除的文件呢,这就需要设法把文件删除到回收站。
但是C#中没有这样的函数,但是VB中有这样的函数,故可以通过借助VB中的函数,将文件删除到回收站。
首先,对项目添加名为Microsoft.VisualBasic.dll的引用
其次,添加命名空间, using Microsoft.VisualBasic.FileIO
这样就可以使用VB中的 FileSystem.DeleteFile方法:
DeleteFile的重载列表如下:
DeleteFile(String)
DeleteFile(String, UIOption, RecycleOption)
DeleteFile(String, UIOption, RecycleOption, UICancelOption)
因此我们可以通过设置RecycleOption 来确定删除的文件是否发送到“回收站”,
RecycleOption 枚举如下:
public enum RecycleOption 成员DeletePermanently 表示永久删除 ;成员SendToRecycleBin表示送至“回收站”;
因此代码如下:
FileSystem.DeleteFile("D:\\123.png", UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
将D盘的123.png图像删除到回收站。