我有一长串图片,我想用它们的编号添加他们的img.src值。我正在使用以下代码滚动图像。我必须使用img控件,因为图像是.tif
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 :(得分:0)
在foreach
循环中,使用:
ThumbnailPanel.Controls.OfType<System.Web.UI.HtmlControls.HtmlImage>()
而不是:
ThumbnailPanel.Controls
这也意味着在循环中,你不需要这一行:
if (c is System.Web.UI.HtmlControls.HtmlImage)
或者这个:
System.Web.UI.HtmlControls.HtmlImage imageBox =
(System.Web.UI.HtmlControls.HtmlImage)c;
c
已经是正确的类型。
现在考虑原始问题。您也可以将foreach
更改为:
foreach (var c in ThumbnailPanel.Controls)
它会被编译,因为var
会评估为Control
。但是,由于OfType
方法,现在没有必要立即进行所有检查。这是一种更清洁的方法。