我想使用查找控件方法在设计器上查找图像并使其可见,但我一直得到一个空值
这是我的代码:
foreach (ImageShow image in imageList)
{
Image Showimage = (Image)FindControl(image.imageName);
Showimage.Visible = true;
}
任何帮助将不胜感激,在此先感谢
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);
foreach (ImageShow image in imageList)
{
Image showimage = FindControl(image.imageName) as Image;
if(showimage != null)
{
showimage .Visible = true;
}
}