在做一個小項目時練習的時候,當我單擊刪除按鈕刪除圖片時,卻發生了異常,如下圖:
在網上搜索半天,可就是沒找到解決方法,終於,經過我的不懈努力,在谷歌裏面搜到了。原來,在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("刪除成功!");
這樣,這個異常就被解決了!