日期:2014-05-18  浏览次数:20806 次

问一个C#里动态取得控件引用的函数
一个界面里有N张图片,其id分别是pic1....picN 

  还有一个输入框,供用户输入来取得某一张图片的引用,比如我输入pic2,然后按“确定”按钮,那个id为pic2的图片就会有动作(至于什么动作目前不谈) 

  然后我现在的困难是如何得到那个引用呢?输入框得到的是String值,另外一个是Control对象,如何将它们对应起来? 

续:后来我在网上搜到一个叫Control.FindControl()的函数似乎可以实现我想要的效果,于是我在MSDN中找该函数的信息,它属于System.web控件,Control的对象。但是我发现即便我加入using System.web,也找不到那个函数……很无奈了 

  大牛帮帮忙,多谢!


------解决方案--------------------
PatrickPan
WinForm里面没有提供FindControl方法,可以自己写一个方法,递归查找控件。
这是我用的:
/// <summary>
/// 根据控件名找出容器中的控件,考虑有些控件放在窗体的容器中,采用了递归查找。
/// </summary>
/// <param name="container">控件容器</param>
/// <param name="controlName">控件名称</param>
/// <returns></returns>
private static Control FindControl(Control container, string controlName)
{
Control findControl = null;
foreach(Control control in container.Controls)
{
if (control.Controls.Count == 0)
{
if (control.Name == controlName)
{
findControl = control;
break;
}
}
else
{
findControl = FindControl(control, controlName);
}
}
return findControl;
}