"); //-->
遍历组件是通常很需要的,因为它们很有规律且遵守一定的算法。
所以用for循环搜索会使代码简洁。特别是不同分组时。
下面是3组CheckBox组件,它们用以表示2进制数。
当然也可用TextBox组件显示'1'或'0'.
遍历组件组件有很多方法,也可用组件数组。(感觉此法很笨)
通常可用下列方法(一组):
for (int i = 0; i < 8; i++)
{
switch (i)
{
case 0:
checkBox8.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 1:
checkBox7.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 2:
checkBox6.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 3:
checkBox5.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 4:
checkBox4.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 5:
checkBox3.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 6:
checkBox2.Checked = (pdwPortVal & (1 << i)) != 0;
break;
case 7:
checkBox1.Checked = (pdwPortVal & (1 << i)) != 0;
break;
}
}
利用C指针的概念,用Controls.Find()方法将使代码简洁许多:
for (int i = 8; i >= 1; i--)//checkBox8..1
{
((CheckBox)this.Controls.Find("checkBox" + i, true)[0]).Checked = (pdwPortVal & (1 << (8 - i))) != 0;
}
同理其他组:
for (int i = 9; i <= 16; i++)//checkBox9..16
{
((CheckBox)this.Controls.Find("checkBox" + i, true)[0]).Checked = (pdwPortVal & (1 << (i - 9))) != 0;
}
由于2组排序不一致,所以后者的遍历方法要简单许多.
如图所示:
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。