2011-09-26 62 views
0

目前我正在使用ImageList控件,尝试从网络中复制文件并覆盖ImageList上的内容。但是,当List填充后我尝试复制图像时,我无法加载图像。我试过使用.Dispose()和.Images.Clear(),但是从我读过的东西中除去了对图像本身的引用,所以它可以被替换。图片列表,删除参考

 imageList1.Images.Clear(); 
     imageList2.Images.Clear(); 


     int i = 1500; 
     string fileName,sourcePath,targetPath,destFile = string.Empty; 
     Image img = null; 
     int counter = 0; 
     bool exists = false; 
     string image = string.Empty; 
     MiscManager MM = new MiscManager(); 
     //filePath = MM.GetBobbinImagePath(); 
     filePath = @"C:\Program Files\Images"; 
     sourcePath = @"\\network Images"; 
     targetPath = filePath; 

     if (!System.IO.Directory.Exists(targetPath)) 
     { 
      System.IO.Directory.CreateDirectory(targetPath); 
     } 

     if (System.IO.Directory.Exists(sourcePath)) 
     { 
      string[] files = System.IO.Directory.GetFiles(sourcePath); 

      foreach (string n in files) 
      { 
       fileName = System.IO.Path.GetFileName(n); 
       destFile = System.IO.Path.Combine(targetPath, fileName); 
       try 
       { 
        System.IO.File.Copy(n, destFile, true); 
       } 
       catch 
       { 
        MessageBox.Show("File in use",fileName); 
       } 

      } 
     } 

     do 
     { 
      if (i < 10) 
      { 
       fileName = "000" + Convert.ToString(i); 
      } 
      else if (i > 10 && i < 100) 
      { 
       fileName = "00" + Convert.ToString(i); 
      } 
      else if (i >= 100 && i < 1000) 
      { 
       fileName = "0" + Convert.ToString(i); 
      } 
      else 
      { 
       fileName = Convert.ToString(i); 
      } 

      image = filePath + fileName + ".bmp"; 
      exists = File.Exists(image); 

      if (exists) 
      { 
       img = Image.FromFile(image); 

       imageList1.Images.Add(img); 
       imageList2.Images.Add(img); 

       imageList1.Images.SetKeyName(counter, Convert.ToString(i) + ".bmp"); 
       imageList2.Images.SetKeyName(counter, Convert.ToString(i) + ".bmp"); 
       counter++; 
      } 


      i++; 
     } while (i < 10000); 

我对图片列表了解不多,所以任何协助总是不胜感激。在C#和VS这样做2010

回答

1

您可以使用MemoryStream让你的图像不扶住参考文件流:

using(MemoryStream ms = new MemoryStream(File.ReadAllBytes(image)) 
{ 
    img = Image.FromStream(ms); 
} 
+0

真棒,我不能尝试的时刻,但我会在早上尝试第一件事 –