Winform根据控件名获取指定控件

/// 
/// 根据指定容器和控件名字,获得控件
/// 
/// 容器
/// 控件名字
/// 控件
private object GetControlInstance(object obj, string strControlName)
{
    IEnumerator Controls = null;//所有控件
    Control c = null;//当前控件
    Object cResult = null;//查找结果
    if (obj.GetType() == this.GetType())//窗体
    {
        Controls = this.Controls.GetEnumerator();
    }
    else//控件
    {
        Controls = ((Control)obj).Controls.GetEnumerator();
    }
    while (Controls.MoveNext())//遍历操作
    {
        c = (Control)Controls.Current;//当前控件
        if (c.HasChildren)//当前控件是个容器
        {
            cResult = GetControlInstance(c, strControlName);//递归查找
            if (cResult == null)//当前容器中没有,跳出,继续查找
                continue;
            else//找到控件,返回
                return cResult;
        }
        else if (c.Name == strControlName)//不是容器,同时找到控件,返回
        {
            return c;
        }
    }
    return null;//控件不存在
}

 

你可能感兴趣的:(Winform)