2013-10-24 199 views
1

我有一長串圖像,我想通過它們添加他們的img.src值數。我使用下面的代碼來滾動瀏覽圖片。我不得不使用IMG控制爲圖像的.tif無法投入'System.Web.UI.LiteralControl'類型的對象來鍵入'System.Web.UI.HtmlControls.HtmlImage'

foreach (System.Web.UI.HtmlControls.HtmlImage c in ThumbnailPanel.Controls) 
{ 
    if (c is System.Web.UI.HtmlControls.HtmlImage) 
    { 
     System.Web.UI.HtmlControls.HtmlImage imageBox = (System.Web.UI.HtmlControls.HtmlImage)c; 

     if (imageBox.ID.Equals("TNimage" + i.ToString())) 
     { 
      using (var DrawImgCheck = new WebClient()) 
      { 
      . 
      . 
      . 
      } 
     } 
    } 
} 

的問題是,因爲是HTMLControl時,我的板是UI.Control我收到以下錯誤

Unable to cast object of type 'System.Web.UI.LiteralControl' to type 'System.Web.UI.HtmlControls.HtmlImage'. 

我怎樣才能解決這個問題?

回答

0

foreach循環,使用此:

ThumbnailPanel.Controls.OfType<System.Web.UI.HtmlControls.HtmlImage>() 

代替:

ThumbnailPanel.Controls 

這也意味着,在循環中,你不需要這行:

if (c is System.Web.UI.HtmlControls.HtmlImage) 

or this one:

System.Web.UI.HtmlControls.HtmlImage imageBox = 
    (System.Web.UI.HtmlControls.HtmlImage)c; 

c已經是正確的類型。


現在考慮原來的問題。你可能也改變了foreach是這樣的:

foreach (var c in ThumbnailPanel.Controls) 

,它將會編譯因爲var會評估爲Control。但是,由於採用了OfType方法,因此現在不需要執行所有檢查。這是一個更清潔的方法。

+0

謝謝你的回覆,我試過這個,編譯'Foreach無法在'方法組'上運行時出現以下錯誤。你打算調用'方法組'嗎?' – user616076

+0

@ user616076,我做了,讓我編輯。 –

+0

我已經添加了()結束,它工作正常,非常感謝 – user616076

相關問題