下面的代码的标签控件Label名称有规律,如何简化下面代码for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    switch (i)
                    {
                        case 0:
                            label1.Visible = true;
                            pictureBox1.Visible = true;
                            break;
                        case 1:
                            label2.Visible = true;
                            pictureBox2.Visible = true;
                            break;
                        case 2:
                            label3.Visible = true;
                            pictureBox3.Visible = true;
                            break;
                        case 3:
                            label4.Visible = true;
                            pictureBox4.Visible = true;
                            break;
                        case 4:
                            label5.Visible = true;
                            pictureBox5.Visible = true;
                            break;
                        case 5:
                            label6.Visible = true;
                            pictureBox6.Visible = true;
                            break;
                        case 6:
                            label7.Visible = true;
                            pictureBox7.Visible = true;
                            break;
                        case 7:
                            label8.Visible = true;
                            pictureBox8.Visible = true;
                            break;
                        case 8:
                            label9.Visible = true;
                            pictureBox9.Visible = true;
                            break;
                    }
                }

解决方案 »

  1.   

    可以遍历datagrid中的控件,用FindControl(组合控件的名称)进行查找,然后赋属性
      

  2.   

    asp.net里有FindControl
    我说的是c# WinForm
    里边好像没有FindControl请高人指点一下
      

  3.   

    楼主,给你一些建议,也许对你有帮助:
        你可以建立一个label数组 一个pictureBox数组,
    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
        label[i].Visible = true;
        pictureBox[i].Visible = true;}
      

  4.   

    for (i = 0; i < 8; i++)
     {
           Control[] ctl,ctl2;
           ctl = this.Controls.Find("label" + (i + 1).ToString(), true);//找到Lable
           ctl2 = this.Controls.Find("pictureBox" + (i + 1).ToString(), true);//找到PictureBox       ((Lable)ctl).Visible = true;
           ((PictureBox)ctl2).Visible = true;
     }
      

  5.   

    for (int i = 0; i < dataGridView1.Rows.Count; i++)
    {
    System.Web.UI.WebControls.Label lb = this.FindControl("Lable+"+i+"+");
    System.Web.UI.WebControls.Image pictureBox = this.FindControl("pictureBox+"+i+"+");
    lb.Visible = true;
    pictureBox.Visible = true;

    }
      

  6.   

    你可以将这些label和PictureBox放在一个panel上,然后通过
    foreach (Control ctr in this.panel.Controls)
    {
      //强制转换成label和picturebox
      //...
    }
    不过这样效率没有你上面的高,强制转换比较慢。