1

我想使用查找控件方法在设计器上查找图像并使其可见,但我一直得到一个空值

这是我的代码:

foreach (ImageShow image in imageList)
{
    Image Showimage = (Image)FindControl(image.imageName);
    Showimage.Visible = true;
}

任何帮助将不胜感激,在此先感谢

4

2 回答 2

5

FindControl 不会搜索整个控件层次结构,我认为这是一个问题。

尝试使用以下方法:

public static T FindControlRecursive<T>(Control holder, string controlID) where T : Control
{
  Control foundControl = null;
  foreach (Control ctrl in holder.Controls)
  {
    if (ctrl.GetType().Equals(typeof(T)) &&
      (string.IsNullOrEmpty(controlID) || (!string.IsNullOrEmpty(controlID) && ctrl.ID.Equals(controlID))))
    {
      foundControl = ctrl;
    }
    else if (ctrl.Controls.Count > 0)
    {
      foundControl = FindControlRecursive<T>(ctrl, controlID);
    }
    if (foundControl != null)
      break;
  }
  return (T)foundControl;
}

用法:

Image Showimage = FindControlRecursive<Image>(parent, image.imageName);

在您的情况下,父母是这样的,例如:

Image Showimage = FindControlRecursive<Image>(this, image.imageName);

您可以在没有 ID 的情况下使用它,然后会找到第一次出现的 T :

Image Showimage = FindControlRecursive<Image>(this, string.Empty);
于 2012-10-24T12:36:03.460 回答
1
foreach (ImageShow image in imageList)
{
    Image showimage = FindControl(image.imageName) as Image;
    if(showimage != null)
    {
         showimage .Visible = true;
    }
}
于 2012-10-24T12:34:51.200 回答