读书人

listview里的图片移除解决方法

发布时间: 2012-03-20 14:01:11 作者: rapoo

listview里的图片移除
我在一个窗口里添加图片是这样添加的

C# code
/// <summary>        /// 加载图片        /// </summary>        public void LoadImage()        {            listView1.Groups.Add(group1);            listView1.Groups.Add(group2);            listView1.Items.Clear();            imageList1.Images.Clear();            this.imageList1.ImageSize = new Size(80, 60);            this.listView1.LargeImageList = this.imageList1;            string TempDirectory = dateTimePicker1.Value.ToShortDateString();            string[] TempDeal = TempDirectory.Split('-');            if (TempDeal[1].Length < 2)            {                TempDeal[1] = "0" + TempDeal[1];            }            if (TempDeal[2].Length < 2)            {                TempDeal[2] = "0" + TempDeal[2];            }            if (System.IO.Directory.Exists(TempDeal[0] + TempDeal[1] + TempDeal[2]))            {                tPlist = System.IO.Directory.GetFiles(TempDeal[0] + TempDeal[1] + TempDeal[2]);                for (int i = 0; i < tPlist.Length; i++)                {                    System.IO.FileInfo fi = new System.IO.FileInfo(tPlist[i].ToString().Replace(TempDeal[0] + TempDeal[1] + TempDeal[2] + "\\", ""));                    string[] a = fi.ToString().Split('_');                    //fi.Extension.ToUpper() == ".JPG"                    if (a.Length == 3)                    {                        if (a[2].Trim() == "有效.jpg")                        {                            imageList1.Images.Add(tPlist[i].ToString(),TempImage(tPlist[i].ToString()));                            ListViewItem item = new ListViewItem(tPlist[i].ToString().Replace(TempDeal[0] + TempDeal[1] + TempDeal[2] + "\\", ""), i, group1);                            listView1.Items.Add(item);                        }                        else                        {                            imageList1.Images.Add(TempImage(tPlist[i].ToString()));                            ListViewItem item = new ListViewItem(tPlist[i].ToString().Replace(TempDeal[0] + TempDeal[1] + TempDeal[2] + "\\", ""), i, group2);                            listView1.Items.Add(item);                        }                    }                }            }            EffectiveCount.Text = group1.Items.Count.ToString() + " 车";            InvalidCount.Text = group2.Items.Count.ToString() + " 车";        }


我要在另一个窗口里做图片的删除和添加操作
C# code
 /// <summary>        /// 有效图        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void button1_Click(object sender, EventArgs e)        {            string[] ChooseDeal=FRM_PIC.PicFath.Split('_');            if (ChooseDeal[2].Trim() == "_有效.jpg")            { return; }            else            {                FRM_PIC KP = (FRM_PIC)this.Tag;                //int a = FRM_PIC.ListViewCount;                //string Filefath=ChooseDeal[0].Substring(ChooseDeal[0].LastIndexOf("\\"));                //string FileRemove =Filefath.Replace("\\","")+"_"+ ChooseDeal[1] + "_有效.jpg";                //删除无效组相关图片                KP.listView1.Groups[1].Items[FRM_PIC.ListViewCount].Remove();                //删除imagelist中相关数据                KP.imageList1.Images.RemoveByKey(FRM_PIC.PicFath);                //修改文件名                FileInfo Finfo=new FileInfo(ChooseDeal[0] + "_" + ChooseDeal[1] + "_" + ChooseDeal[2]);                Finfo.MoveTo(ChooseDeal[0] + "_" + ChooseDeal[1] + "_有效.jpg");                //添加imagelist数据                KP.imageList1.Images.Add(KP.TempImage(ChooseDeal[0] + "_" + ChooseDeal[1] + "_有效.jpg"));                //添加到listview                ListViewItem item = new ListViewItem(ChooseDeal[0] + "_" + ChooseDeal[1] + "_有效.jpg", FRM_PIC.ListViewCount, KP.group1);                KP.listView1.Items.Add(item);                            }        } 



可是一直报“有另一进程正在使用该文件”错误!
各位同仁,哪里出错了?弄了一个晚上了!

[解决办法]
你需要重新生成一个ImageList,在里面添加不被移除的,然后设置listView1的ImageList
[解决办法]
重新生成一个ImageList
[解决办法]
文件访问冲突。重新添加个

读书人网 >C#

热点推荐