下面的代码的标签控件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;
}
}
{
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;
}
}
我说的是c# WinForm
里边好像没有FindControl请高人指点一下
你可以建立一个label数组 一个pictureBox数组,
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
label[i].Visible = true;
pictureBox[i].Visible = true;}
{
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;
}
{
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;
}
foreach (Control ctr in this.panel.Controls)
{
//强制转换成label和picturebox
//...
}
不过这样效率没有你上面的高,强制转换比较慢。