是这样的,比如说我有一组button控件,名称为 a1,a2,a3
我想用"a"+"1"这个字串来获得a1控件的句柄以便对它进行操作.目前我是这样做的:
button mybutton=button[3];for(int i=0;i<mybutton.Length;i++)
{
if(mybutton[i].name=="a"+"1")
  {
    MessageBox.show("就是这个");
  }
}大概这样可以得到name为a1的控件的句柄,但我以前用javascript的时候有一个函数eval(),可以把括号中的字串直接转换为页面中的控件,我想C#中也应该有这样的函数;高手,请指教一下啦!跪谢!!

解决方案 »

  1.   

    查查 System.Reflection 里有没有
      

  2.   

    我找了一上午,其实用我上边写的方法也可以解决,也许可以做成一个类...但是我总觉得有点复杂,javascript里都有,我在想C#里也应该有吧...唉.再跪...
      

  3.   

    xiaopai20,能不能帮小弟想一想?我找了二楼大哥说的那个名称空间了,N多类,找不到,晕...
      

  4.   

    xiaopai20(小排——流浪狗) ( ) 
    我记得控件里直接有个根据名称找控件的方法。在webform里有个FindControl函数
    但是在winform里,据我所知还没有这样的函数。
      

  5.   

    对应的代码
    for(int i=0;i<this.Controls.Count;i++)
    {
    if(this.Controls[i].Name=="a"+"1")
    {
    MessageBox.show("就是这个");
    }
    }
      

  6.   

    试一下!先谢过各位哥哥!
    webform里的那个findcontrol方法我也找到了,但需要什么名称空间,我没找到那个名称空间.好啦试一下!跪谢!其实我是想做一个俄罗斯方块来的,就是想用button来实现.
      

  7.   

    不过如果有一个专门的函数可以解决这个问题最好了,我的设想是这样的,比如这个函数叫
    getControl(),参数是一个字串,我可以用以下方式得到一个控件的句柄:Control mycontorl=getControl("a"+1);之后,就可以对这个控件进行操作了,比如:mycontorl.Text="这就是我要的";如果有getControl()这样的函数最好了....
      

  8.   

    那个webform里的FindControl这样子调用
    this.Page.FindControl或者this.TextBox1.FindControl跟在控件后
      

  9.   

    private Control GetControl(string name)
    {
        foreach(Control c in this.Controls)
        {
            if (c.Name == name)
            {
                return c;
            }
        }
        return null;
    }
    这个函数可以返回当前窗体上名称为name的控件