我有一个很长的图片列表,我想把它们的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'.我怎么才能避开这一切?
发布于 2013-10-24 12:16:27
在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方法,现在确实没有必要进行所有这些检查。这是个更干净的方法。
https://stackoverflow.com/questions/19565667
复制相似问题