您可以尝试类似下面的代码。但是,如果您知道层次结构不会改变,最好执行一系列“FindControl”调用。要发现正确的层次结构,请调试应用程序并搜索控制层次结构。
public static T FindControlRecursiveInternal<T>(Control startingControl, string controlToFindID) where T : Control
{
if (startingControl == null || String.IsNullOrEmpty(controlToFindID))
return (T)null;
Control foundControl = startingControl.FindControl(controlToFindID);
if (foundControl == null)
{
foreach (Control innerControl in startingControl.Controls)
{
foundControl = FindControlRecursiveInternal<T>(innerControl, controlToFindID);
if (foundControl != null)
break;
}
}
return (T)foundControl;
}