怎么对动态创建的100个checkbox控件进行有效访问
如何对动态创建的100个checkbox控件进行有效访问?
我要做一百条判断题, 用到 100 个 checkbox 控件, 通过 checked 值来 确认答案。对应创建 的100个 label 来存正确答案。
现在的问题来了, 在我答完题 点 提交按钮的时候,如何去从 1 to 100 逐个checkbox 控件来访问得到对应题的答案,并算出是否正确?
//创建 100个控件
for (int i=1 to i<+100; i++)
{
checkbox ch= new checkbox();
ch.id= "check"+i.tostring();
ch.text=title;
label anew=new label();
an.id="an"+i.tostring();
an.text=答案;
an.visibled=false;
}
// 如何访问100个控件???
for ( int i=1 to i<=100 ; i++)
{
// an1,an2,an3……an100
if ( (check&i.checked==true)&&(an&i.text=="正确") // 如何访问每一个checkbox的 值? check1,check2,…….check100
count++;
}
showmessage(你答对了 count 条题目);
------解决思路----------------------
创建的时候
ch.Name = "check" + i.ToString();
for (int i = 0; i < 100; i++)
{
(this.Controls["check" + i.ToString()] as CheckBox).xxx
}
ASP.NET用
this.GetControl("check" + i.ToString())
------解决思路----------------------
2个办法
1.将checkbox加入数组
CheckBox[ ] CB=new CheckBox[100];
for(int i=0;i<100;i++)
{
CB[I]=new CheckBox();
}
2.给每个CheckBox起不同的名字,然后遍历窗体
foreach(Control C in this.Controls)
{
if(C is CheckBox)
{
bool b=(CheckBox)C.Checked;
}
}
如果是放到了panel里,则需要遍历panel的Controls
------解决思路----------------------
建议将他们放入数组或list
------解决思路----------------------
不用lable 用Checkbox 的Tag属性存答案
------解决思路----------------------
1、放入数组或队列;2、动态创建控件时将其放入容器;3、动态创建时有规律命名;以上三种最后再遍历取值。
------解决思路----------------------
2 楼和4楼正解,Checkbox 控件放在数组或List集合方便遍历,用Tag属性保存答案。
多说一句,Tag属性是留给编程人员用的一个属性,初学者可能不了解,但这属性十分有用
我要做一百条判断题, 用到 100 个 checkbox 控件, 通过 checked 值来 确认答案。对应创建 的100个 label 来存正确答案。
现在的问题来了, 在我答完题 点 提交按钮的时候,如何去从 1 to 100 逐个checkbox 控件来访问得到对应题的答案,并算出是否正确?
//创建 100个控件
for (int i=1 to i<+100; i++)
{
checkbox ch= new checkbox();
ch.id= "check"+i.tostring();
ch.text=title;
label anew=new label();
an.id="an"+i.tostring();
an.text=答案;
an.visibled=false;
}
// 如何访问100个控件???
for ( int i=1 to i<=100 ; i++)
{
// an1,an2,an3……an100
if ( (check&i.checked==true)&&(an&i.text=="正确") // 如何访问每一个checkbox的 值? check1,check2,…….check100
count++;
}
showmessage(你答对了 count 条题目);
------解决思路----------------------
创建的时候
ch.Name = "check" + i.ToString();
for (int i = 0; i < 100; i++)
{
(this.Controls["check" + i.ToString()] as CheckBox).xxx
}
ASP.NET用
this.GetControl("check" + i.ToString())
------解决思路----------------------
2个办法
1.将checkbox加入数组
CheckBox[ ] CB=new CheckBox[100];
for(int i=0;i<100;i++)
{
CB[I]=new CheckBox();
}
2.给每个CheckBox起不同的名字,然后遍历窗体
foreach(Control C in this.Controls)
{
if(C is CheckBox)
{
bool b=(CheckBox)C.Checked;
}
}
如果是放到了panel里,则需要遍历panel的Controls
------解决思路----------------------
建议将他们放入数组或list
------解决思路----------------------
不用lable 用Checkbox 的Tag属性存答案
for (int i=1 to i<+100; i++)
{
checkbox ch= new checkbox();
ch.id= "check"+i.tostring();
ch.text=title;
ch.tag=True;
}
foreach(Control C in this.Controls)
{
if(C is CheckBox)
{
CheckBox ckb=(CheckBox)C;
if(ckb.Checked&&(bool)ckb.Tag
------解决思路----------------------
!ckb.Checked&&!((bool)ckb.Tag))
{
}
}
}
------解决思路----------------------
1、放入数组或队列;2、动态创建控件时将其放入容器;3、动态创建时有规律命名;以上三种最后再遍历取值。
------解决思路----------------------
2 楼和4楼正解,Checkbox 控件放在数组或List集合方便遍历,用Tag属性保存答案。
多说一句,Tag属性是留给编程人员用的一个属性,初学者可能不了解,但这属性十分有用