在WEB Form中,可以通过FindControl("控件ID")来引用控件,在Windows Form中有没有类似的方法来引用控件? 
例如,有一个名为"label1"的控件(这个名字由程序中动态选择,也有可能是label2,label3,或是其它名称,我想实现 
label1.Text = "SomeText" 
程序中应写为 
SomeMethod("label1").Text = "SomeText" 当然,这个SomeMethod是我杜撰的,它的功能是通过"label1"这个字符串,来引用名为label1的对象。 
问题是,在C# Windows Form中,如何实现上述的SomeMethod方法? 
望各位大侠不吝赐教。 

解决方案 »

  1.   

    CallByName函数,在C#中要引用Microsoft.VisualBasic
      

  2.   

    谢谢PUPO
    CallByName 函数是执行对象的方法,或者设置或返回对象的属性。
    而我是想返回对象本身。
      

  3.   

    通过元数据反射,可以完成.先type调用它的构造函数,再调用它的方法。发射调用比较慢,因为它调用方法的时候,需要通过字符串查找方法名。
      

  4.   

    好像能通过遍历
    foreach( Controls con in Form1.Controls )
    {
       if( con.Name == "Label1" )
       {
           Label label1 ;
           if( label1 as con Label != null )
               label1.Text = "helloWorld";
            break;
       }
    }
      

  5.   

    如果反编译 FindControl 方法,可以看到也是循环在工作。另外,Windows 应用程序的界面特性几乎可以忽略性能问题。其实,很多人所担心的性能问题绝大多数都是白担心,最主要的是优化最消耗性能的部分,这就得依靠性能测试。
      

  6.   

    OK,就用遍历的方法吧,谢谢MyNameEPC的补充说明。