我想用ListView做一个类似图片浏览器的工具,展示部份已经可以了,但当我选择一个item用listView1.Items.Remove(item);删除其对应项后,再去删本地图片时,提示图片文件正在使用,无法删除,请问要怎样才可以在删除Item后,删除对应的图片文件,谢谢:代码如下: private void SetListView(string[] ImageName)
{
listView1.GridLines = true;
listView1.FullRowSelect = true;
listView1.HideSelection = false;
listView1.HoverSelection = true;
listView1.MultiSelect = true; ImageList LargeImageList = new ImageList();
LargeImageList.ImageSize = new Size(200, 200);
ImageList SmallImageList = new ImageList();
SmallImageList.ImageSize = new Size(100, 100); int i = 0;
foreach(string imagename in ImageName)
{
SmallImageList.Images.Add(Image.FromFile(imagename.Trim()));
LargeImageList.Images.Add(Image.FromFile(imagename.Trim()));
ListViewItem lv = new ListViewItem(imagename);
//lv1.SubItems.Add("001");
lv.ImageIndex = i;
listView1.Items.Add(lv);
i++;
}
listView1.LargeImageList = LargeImageList;
listView1.SmallImageList = SmallImageList;
listView1.Refresh();
} private void button4_Click(object sender, EventArgs e)
{
SetListView(new string[]{"Alt.PNG","Manicho.PNG"}); } private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewItem item = listView1.GetItemAt(e.X, e.Y);
MessageBox.Show(item.Text); string filename = item.Text.Trim();
listView1.Items.Remove(item);
//listView1.Dispose();
File.Delete(filename); &&这里出错
}请大侠指教啊........
{
listView1.GridLines = true;
listView1.FullRowSelect = true;
listView1.HideSelection = false;
listView1.HoverSelection = true;
listView1.MultiSelect = true; ImageList LargeImageList = new ImageList();
LargeImageList.ImageSize = new Size(200, 200);
ImageList SmallImageList = new ImageList();
SmallImageList.ImageSize = new Size(100, 100); int i = 0;
foreach(string imagename in ImageName)
{
SmallImageList.Images.Add(Image.FromFile(imagename.Trim()));
LargeImageList.Images.Add(Image.FromFile(imagename.Trim()));
ListViewItem lv = new ListViewItem(imagename);
//lv1.SubItems.Add("001");
lv.ImageIndex = i;
listView1.Items.Add(lv);
i++;
}
listView1.LargeImageList = LargeImageList;
listView1.SmallImageList = SmallImageList;
listView1.Refresh();
} private void button4_Click(object sender, EventArgs e)
{
SetListView(new string[]{"Alt.PNG","Manicho.PNG"}); } private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListViewItem item = listView1.GetItemAt(e.X, e.Y);
MessageBox.Show(item.Text); string filename = item.Text.Trim();
listView1.Items.Remove(item);
//listView1.Dispose();
File.Delete(filename); &&这里出错
}请大侠指教啊........
LargeImageList.Images.Add(Image.FromFile(imagename.Trim()));===========》》》》Image temp = Image.FromFile(imagename.Trim());
SmallImageList.Images.Add(Image.FromFile(new Bitmap(temp));
LargeImageList.Images.Add(Image.FromFile(new Bitmap(temp));
temp.Dispose();
image1.Dispose();
再删除
或多线程
你的方法我试了,不行.
我改动后的代码如下:
private void SetListView(string[] ImageName)
{
listView1.GridLines = true;
listView1.FullRowSelect = true;
listView1.HideSelection = false;
listView1.HoverSelection = true;
listView1.MultiSelect = true; ImageList LargeImageList = new ImageList();
LargeImageList.ImageSize = new Size(200, 200);
ImageList SmallImageList = new ImageList();
SmallImageList.ImageSize = new Size(100, 100); int i = 0;
foreach(string imageName in ImageName)
{
Image tempImage = Image.FromFile(imageName.Trim());
SmallImageList.Images.Add(tempImage);
LargeImageList.Images.Add(tempImage);
tempImage.Dispose(); ListViewItem lv = new ListViewItem(imageName);
//lv1.SubItems.Add("001");
lv.ImageIndex = i;
listView1.Items.Add(lv);
i++;
}
listView1.LargeImageList = LargeImageList; //报错,说参数没效
listView1.SmallImageList = SmallImageList;
listView1.Refresh();
}
listView1.LargeImageList = LargeImageList;
listView1.SmallImageList = SmallImageList;
listView1.Refresh();
}listView1.LargeImageList = LargeImageList; //时报错,调试发现LargeImageList中没有数据.
SmallImageList.Images.Add(Image.FromFile(new Bitmap(temp));
LargeImageList.Images.Add(Image.FromFile(new Bitmap(temp));
temp.Dispose();