今天因为要做一个面板容器,面板容器里放了25个CheckBox控件,因为本人先排好了1-5个,然后自己随意COPY ,PASTE,而且中途还调换了很多控件的位置,最后命名的时候,虽然都是不管位置,都是1-25这样的编号编制过去的,可我再运用foreach循环的时候,确实是让我郁闷了很久,每次循环的时候,都是从ID编号15的位置开始查找,我这就纳闷了,反正我是第一次开始从事C/S模式开发,这个winForm我简直就是相当的感冒。
后来咨询了下曾经开发C/S的朋友,他比较熟悉这块,他就说了,这个先必须在ADD的时候确立顺序,因为代码是从头至尾执行的,你先生成的控件,肯定得先去找到,呵呵,一下子如醍醐灌顶般,让我开窍了,有的时候你可能也是因为不熟悉,或者脑袋短路没及时的想到那里去,偶尔朋友帮忙,也觉得不错。见图
然后就直接写了代码进行全选等或者不全选等:
见代码
if (cbPortXSelectAll.Checked)
{
foreach (CheckBox cb in pnlPortXSlotAll.Controls)
{
cb.Checked = true;
}
}
else
{
foreach (CheckBox cb in pnlPortXSlotAll.Controls)
{
cb.Checked = false;
}
}
我这个还要就是有个功能当你选择一部分的时候,你可能需要取部分的值,比如,我选择了就为O,不选择就是X,那这代码就是如下代码可以实现:
自己写的,当做记录!
public string getinfo()
{
string tempSlotInfo ="";
foreach (CheckBox cb in pnlPort1SlotAll.Controls)
{
if (cb.Checked)
{
tempSlotInfo += "O".ToUpper();
}
else
{
tempSlotInfo += "X".ToUpper();
}
}
return tempSlotInfo.ToUpper().ToString();
}