在做一个小项目时练习的时候,当我单击删除按钮删除图片时,却发生了异常,如下图:
在网上搜索半天,可就是没找到解决方法,终于,经过我的不懈努力,在谷歌里面搜到了。原来,在PictureBox里面显示图片的的这一事件占据了程序的一个进程,当要删除这张图片的时候,这个进程仍然在执行中。就算让PictureBox先显示下一张图片,然后再删除也不行。因为要删除的那张图片被占用了,无法删除!面对这样的情况,需要在这个图片文件被删除之前,就释放掉PictureBox里面的图片资源。具体代码如下:
//获取要删除的图片的路径
string fullPath = GetPictureFullPath(lbPictureName.SelectedItem.ToString());
FileInfo file = new FileInfo(fullPath);
//释放掉PictureBox里面的Image资源
pbShowPicture.Image.Dispose();
//删除一张图片后,让PictureBox自动显示下一张,如果已经是最后一张,则显示第一张图片
if (lbPictureName.SelectedIndex == lbPictureName.Items.Count)
{
lbPictureName.SelectedIndex = 0;
}
else
{
lbPictureName.SelectedIndex = index + 1;
}
lbPictureName.Items.Remove(lbPictureName.Items[index]); //把ListBox里面的图片移除
file.Delete(); //删除图片
MessageBox.Show("删除成功!");
这样,这个异常就被解决了!