1

我有一长串图像,我想通过它们的编号添加它们的 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'.

我怎样才能解决这个问题?

4

1 回答 1

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但是,由于该方法,现在确实没有必要进行所有检查。这是一种更清洁的方法。

于 2013-10-24T12:16:27.840 回答