WPF如何删除已经打开的图片文件

来源:未知 责任编辑:智问网络 发表时间:2013-10-07 00:59 点击:

 

在WPF中,你也许会碰到这种情况,图片在界面打开,想用File.Delate()删除却无法删除。

 

比如:

 

XAML:

 

<Window x:Class="WPF_Testing_Application.Window1"

 

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

 

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

 

Title="Window1" Height="300" Width="300">

 

<StackPanel Height="100" Name="stackPanel1" Width="200" />

 

</Window>

 

Code:

 

public Window1()

 

{

 

InitializeComponent();

 

BitmapImage bi = new BitmapImage();

 

bi.BeginInit();

 

bi.UriSource = new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Autumn Leaves - Copy.jpg");

 

bi.EndInit();

 

Image image1 = new Image();

 

image1.Source = bi;

 

stackPanel1.Children.Add(image1);

 

stackPanel1.MouseLeftButtonDown += delegate { DeleteImage(); };

 

}

 

private void DeleteImage()

 

{

 

stackPanel1.Children.RemoveAt(0);

 

File.Delete(@"C:\Users\Public\Pictures\Sample Pictures\Autumn Leaves - Copy.jpg");

 

}

 

 

这样会出现文件被占用,无法删除的异常。

 

 

解决办法:www.2cto.com

 

把代码改成:

 

public Window1()

 

{

 

InitializeComponent();

 

BitmapImage bi = new BitmapImage();

 

bi.BeginInit();

 

bi.CacheOption = BitmapCacheOption.OnLoad; //增加这一行

 

bi.UriSource = new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Autumn Leaves - Copy.jpg");

 

bi.EndInit();

 

Image image1 = new Image();

 

image1.Source = bi;

 

stackPanel1.Children.Add(image1);

 

stackPanel1.MouseLeftButtonDown += delegate { DeleteImage(); };

 

}

 

就可以了。

如果你用ObservableCollection<BitmapImage>作为datasouce,

 

             BitmapImage bmp = new BitmapImage();

 

              bmp.BeginInit();

 

              bmp.UriSource = new Uri("Blue hills.jpg", UriKind.Relative);

 

              bmp.CacheOption = BitmapCacheOption.OnLoad;

 

              bmp.EndInit();

 

 

用以下方式删除就可以了:

 

BitmapImage img = (BitmapImage)listPictures.SelectedItem;

 

File.Delete(img.UriSource.ToString());

 

摘自 soft2buy

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET&#160;GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1