我想使用find控制方法在设计器上查找图像并使其可见,但我一直得到null
这是我的代码:
foreach (ImageShow image in imageList)
{
Image Showimage = (Image)FindControl(image.imageName);
Showimage.Visible = true;
}
非常感谢任何帮助, 提前致谢
答案 0 :(得分: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);
答案 1 :(得分:1)
foreach (ImageShow image in imageList)
{
Image showimage = FindControl(image.imageName) as Image;
if(showimage != null)
{
showimage .Visible = true;
}
}