我在页面中定义了N个TextBox命名规则为
TextBox11,TextBox12,TextBox13……
TextBox21,TextBox22,TextBox23……
TextBox31,TextBox32,TextBox33……
现在我想通过类似下边的函数来遍历所有的TextBox
for(int i=0;i<this.ddlCPNUM.Items.Count;i++)
{
for(int j=0;j<4;j++)
{
this.Textbox[j][i].Visible=true;
}
}
但是这个写法不对!请问应该怎么改啊?谢谢啦!

解决方案 »

  1.   

    1.定义数组, Textbox放到数组里
    2.遍历Page.Controls, 判断是否能转化为Textbox
      

  2.   


    for(int j=0;j<4;j++)
    {
       string id = TextBox + j.ToString() + i.ToString();
       TextBox tb = (TextBox)this.Findcontrol(id);
       tb.Visible = true;
    }
      

  3.   

    可以通过FindControl实现,但运行效率较低
    for(int i=0;i<this.ddlCPNUM.Items.Count;i++)
    {
    for(int j=0;j<4;j++)
    {
                 string txtName = "TextBox"+i.ToString()+j.ToString();
                 Page.FindControl(txtName).Visible = false;
             }
    }
      

  4.   

    this.Textbox[j][i].Visible=true;
    =====>试试
    TextBox box=form1.FindControl("Textbox"+j.ToString()+i.ToString());
    if(box!=null)
    box.Visible=true;form1可以为包含这些TextBox的父控件的ID
      

  5.   

    个人推荐定义控件数组:
    private TextBox[][] MyTextBoxs = new TextBox[][]{
    new TextBox[]{TextBox11,TextBox12,TextBox13},
    new TextBox[]{TextBox21,TextBox22,TextBox23},
    new TextBox[]{TextBox31,TextBox32,TextBox33}}; private void Button1_Click(object sender, System.EventArgs e)
    {
    for(int i=0;i<this.ddlCPNUM.Items.Count;i++)
    {  
       TextBox[] curGroup = (TextBox[])MyTextBoxs[i];
    for(int j=0;j<4;j++)
    {
                      curGroup[j].Visible = false;      
             }
    }