请问: 字符串的内容如何转化成具体的对象名称?
   是这样的,比如在窗体上有个Button按钮的实例,其名称(name)为but3
现在我在代码中通过字符串组合成这个对象的名称,问题是如何可以调用这个具体的对象的属性和方法。  事例代码如下:
   在另一个按钮的Click事件中写:   string str1="but";
   string str2="3";
   string str=str1+str2;
   现在问题是: 我想用这个str调用那个已有的button对象,就是前面说的名称叫but3的那个。
   如要使 but3.text="abcde”
   现在我用这个组合出的字符串str怎么可以代替?
   str.text="abcde";   这肯定是不成的,请高手赐教,我的系统中好几个地方都有这个问题要解决。多谢大家了

解决方案 »

  1.   

    Button btn = (Button)Page.FindControl("你控件的ID");
            btn.Text = "你的内容";
      

  2.   

    也就是通过FindControl()来获取页面对象
      

  3.   

    可是我需要动态组合出字符串来控制对象,应为我页面上有300个监控点的对象,必须在代码中通过循环来组合出字符串,然后用字符串来控制监控点的动作。
      如所有的监控点对象的名称(NAME)都是 node1,node2,node3.....node300
      现在用一个循环:
       string str="node";
       string nodestr="";
       for (i=1;i<=300;i++)
            {
               nodestr=str+i.ToString();
               然后在这里要用nodestr来控制同名的该监控点对象
             }
       请问该处怎么是字符串转成具体的对象?对了,我的是Winform
      

  4.   

    //测试通过        private void button1_Click(object sender, EventArgs e)
            {
                MessageBox.Show("aa");
            }        private void button2_Click(object sender, EventArgs e)
            {
                string str = "button" + "1";
                ((Button)(this.Controls.Find(str, true)[0])).PerformClick();
            }
      

  5.   

    amandag(高歌) 的方法简便!俺以前有个类似的问题,用了Reflection把所有子Control都循环一遍. 
    而且发现如果只用this.Controls做循环查找(不用this.Controls.Find),就不会找到Form 上的Group Box中的控件.
      

  6.   

    简历内存数组按控件索引顺序初始化该数据 node1,node2,node3.....node300
    访问的时候根据数组下标获取对应的控件
      

  7.   

    多谢高歌兄与godi兄,分已给。不过还想问问godi兄,你说的内存数据是系统生成的,还是需要我自己建一个相应类型的arraylist?如果是系统的,那名字是什么?