2015-05-14 47 views
-1

100個圖片框在我的屏幕上顯示了100張對應於100個菜餚的圖片。 我需要的是由100刷新100的圖像,但我得到以下錯誤就行的foreach(圖片框miPicture在this.Controls):在控件中分配多張圖片Picturebox

「」類型的未處理的異常發生 在Cheff2000.exe中

其他信息:無法投射類型爲 'System.Windows.Forms.Button'的對象類型'System.Windows.Forms.PictureBox'。

我的空虛是:

private void CapturaRecetasBtnFam()  // SOLO Captura las primeras Recetas de la Fam cuando se hace Click en el BtnFam-n 
    { 
     BlanquearRec(); 
     oListaFamRec = objFamRec.Listar(); 
     var miFami = oListaFamRec.Find(DescFam => DescFam.Descripcion == NomFam); 
     // The cod captured the ongoing fam 
     string CodFam = oListaFamRec[miFami.Posicion - 1].Codigo; 
     oListaReceta = objRec.ListarPosicionEnFam(); 
     var Result = from sigreceta in oListaReceta where sigreceta.Familia == CodFam select sigreceta; 

     // We assign text and images to objects (Button and PictureBox) of Recipes 
     ContRec1 = 1; 
     ContRec2 = 1; 
     foreach (Vi_Receta Rec in Result) 
     { 
      // Textos a los Button 
      nomBoton = "BtnRec" + Convert.ToString(ContRec1); 
      nomPicture = "PicRec" + Convert.ToString(ContRec2); 
      foreach (Control miObjeto in this.Controls) 
      { 
       if (miObjeto is Button && miObjeto.Name == nomBoton) 
       { 
        miObjeto.Text = Rec.Descripcion; 

        ContRec1++; 
       } 
      } 
      // PictureBox pictures 
      foreach (PictureBox miPicture in this.Controls) 
      { 
       if (miPicture.Name == nomPicture && miPicture.Name == nomPicture) 
       { 
        miPicture.Image = Rec.Foto == null ? null : ConvertByteArrayToImage(Rec.Foto); 
       } 
      } 


     } 
    } 
+0

這似乎是''this''中的'Controls'之一是一個按鈕,你需要檢查pictureboxes ...你有什麼研究? – Sayse

+0

問題出在這裏:'foreach(在this.Controls中的PictureBox miPicture)'這枚舉了所有的控件,包括導致錯誤的按鈕。 – Mints97

+0

謝謝大家的寶貴意見。 –

回答

0

的問題是在你的foreach循環。你現在擁有它的方式,它通過所有的控件枚舉,包括導致錯誤的按鈕。它應該看起來像這樣(未經測試):

foreach (Control cPicture in this.Controls) 
{ 
    if (cPicture is PictureBox) 
    { 
     PictureBox miPicture = (PictureBox)cPicture; 

     if (miPicture.Name == nomPicture && miPicture.Name == nomPicture) 
     { 
      miPicture.Image = Rec.Foto == null ? null : ConvertByteArrayToImage(Rec.Foto); 
     } 
    } 
} 
+0

極好的Mints97!這是解決方案。非常感謝 !!!! –

+0

@MarioEscudero:不客氣。如果此答案對您有幫助,您可以通過點擊旁邊的複選標記來接受*。 – Mints97

+0

是啊Mints97,我知道但仍然沒有必要的分數。再次感謝。 –