LZ的单选按钮是定死的吧?如果是这样,就用不着foreach进行扫描,直接判断就可以
虽然代码长一些,不过执行速度会更快一些(控件数越多越明显)。
char[] answers = new char[20]; //答案
int questionNo = 0; //问题编号
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
answers[questionNo] = 'A';
}
else if(radioButton2.Checked)
{
answers[questionNo] = 'B';
}
......
else
{
answers[questionNo] = '';
}
questionNo++;
/* 读取下一题的处理 */
return;
}
还有一种方法是在每个单选按钮的Click事件中修改值(其实这种方法稍微笨一些,虽然答案会即时更改,但实际上没多大意义--仅供参考),如下所示:
char[] answers = new char[20]; //答案表
int questionNo = 0; //问题编号
private void radio1_Click(object sender, EventArgs e)
{
answers[questionNo] = 'A';
}
private void radio2_Click(object sender, EventArgs e)
{
answers[questionNo] = 'B';
}
......
private void button1_Click(object sender, EventArgs e)
{
questionNo ++;
/* 读取下一题的处理 */
}
啊。。。3年没碰这玩意了。。代码什么的都不记得了 ,也没编程软件帮你试试。好像是先定义一个方法类,直接读取ABCD数值并覆盖到数组中酱紫的。。。SORRY 没帮到你。。。
我来补全下代码吧~
String[] answers = new string[20]; //答案
int questionNo = 0; //问题编号
private void button1_Click(object sender, EventArgs e)
{
foreach (Control c in this.Controls)
{
if (c is RadioButton && ((RadioButton)c).Checked)
{
answers[questionNo] = ((RadioButton)c).Text;
questionNo++;
return;
}
}
MessageBox.Show("未选择!");
}
是有多个单选按钮吗
FOREACH(CONTROL C IN THIS.PANEL1.CONTROLS)
{
IF(C IS RADIOBUTTON)
{
RADIOBUTTON RID=(RADIOBUTTON)C;
IF(RID.CHECKED)
{
赋值
}
}
}