return this.FindControl("ControlName");

解决方案 »

  1.   

    在win form上没有FindControl这个方法啊
      

  2.   

    /// <summary>
      /// 根据给定的对象和路径,获得其子孙成员
      /// </summary>
      /// <param name="pTopObject">要获得的成员是此对象的子孙,一般为Form</param>
      /// <param name="pObjPath">依此路径获取,例如: TextBox1 或TextBox1.Size</param>
      /// <param name="Index">用索引化属性的可选索引值返回</param>
      /// <returns>子孙</returns>
      public static object GetMember(object pTopObject, string pObjPath,object[] Index)
      {
       string[] strMember;
       string MemberName="";
       object obj=null;
       Type objType=null;   try 
       {
        strMember=pObjPath.Split ('.');
        for (int i=0; i<strMember.Length && strMember[i]!="" ;i++)
        {
         if (i==0) 
         {
          obj=(object)pTopObject;
          objType=pTopObject.GetType ();
         }
         MemberName=strMember[i];     obj = (object) objType.InvokeMember(MemberName, 
          BindingFlags.Public | BindingFlags.NonPublic |BindingFlags.IgnoreCase | 
          BindingFlags.Instance | BindingFlags.Static| BindingFlags.GetField |  BindingFlags.GetProperty , null, obj, null);
         if (obj!=null)     objType=obj.GetType ();
         else throw new Exception ("不能根据:" + pObjPath + "获得" + pTopObject.ToString() + "的成员:" + MemberName);
        }
        return obj;   }
       catch ( System.Exception ex  ){ throw new Exception ("获取 " + pObjPath  + " 的成员:" + MemberName + "时发生错误:\n" + ex.Message );  }
      
      }
      

  3.   

    没有明白楼上的意思。我是想查找一个WIN FORM上有没有指定名称的控件,有,则返回
      

  4.   

    这个静态方法用于动态加载\设置对象
    用法如:
            GetMember(frmMain,"txtName");
            GetMember(frmMain,"txtName.Size")  ;
            GetMember(frmMain,"txtName.Size.Width");
      

  5.   

    GetMember(frmMain,"txtName");  frmMain是你的窗口,txtName是字符型表示的控件名称,怎么不能解决你的问题了?????  而且是最优的解决方法
      就算winform有findControl或用遍历算法,都没这个好,因为在Form下的控件并不一定包含在Form.Controls中,而可能在某个Panel中或其他控件的子控件中,而这个方法可以获得一个类的所有指定成员,包括子控件,属性,甚至事件,而且可以是私有的,静态的.
      

  6.   

    你可以改一下,将出错提示改成返回null啊,不就可以判断是否找到了指定名称的控件,晕倒
      

  7.   

    public Control Find(string ControlName,Control FormControl )
    {
      if(FormControl.Controls.IndexOf(ControlName) >= 0)
      {
         return FormControl.Controls[FormControl.Controls.IndexOf(ControlName)];
      }
    }
      

  8.   

    foreach(Control c in this.Controls)
    {
        if(c.Name == "button1")  // 也可以是  if(c.GetType().Name == "Button")  一个是判断名字, 另一个是判断类型
        {
            //...
        }
    }
      

  9.   

    C#没有“eval()”这样的函数吗?