出错了。单选按钮做的一个选择题抽题小程序,高手请赐教。谢谢。 本帖最后由 huoyan6878 于 2013-10-13 18:37:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 caozhy 于 2013-10-13 21:27:27 编辑 你的逻辑好像有问题啊,总的foreach循环,你遍历每一个RadioButton,只要没有点击,就执行你加的else子句。比如你的前面已经选择了,最后一个没选择,那么textbox3就会被赋值没有选择的内容。你可以在foreach之外赋值一个布尔变量all_false,为true,在foreach里面,只要见到Checked为true,就赋值all_false为false,循环完毕进行判断,如果all_false为true,就把textbox3赋值为未选择的内容。个人拙见! 我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会c和c++的一些基础知识。现在凭c和c++的那点基础重新弄程序玩。有点郁闷。代码都看不懂。版主的代码我就没看懂groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A',这两句什么意思。而且我用的是vs2008,不知道是不是版本的原因,直接替换成版主的代码,运行时说无法将string隐式转换成bool型。我只好再次修改啰嗦点:var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked); if(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A') { textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答正确!" ; } else textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答错误!";这样运行成功了。 谢谢,我只是在用foreach循环,具体这个循环什么情况我还真不了解。用你的方法解决问题了。同时也了解了foreach循环的原理。 我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会c和c++的一些基础知识。现在凭c和c++的那点基础重新弄程序玩。有点郁闷。代码都看不懂。版主的代码我就没看懂groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A',这两句什么意思。而且我用的是vs2008,不知道是不是版本的原因,直接替换成版主的代码,运行时说无法将string隐式转换成bool型。我只好再次修改啰嗦点:var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked); if(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A') { textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答正确!" ; } else textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答错误!";这样运行成功了。少了一个括号,不好意思。和2008无关。s = a + b ? c : d必须写成s = a + (b ? c : d) 我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会c和c++的一些基础知识。现在凭c和c++的那点基础重新弄程序玩。有点郁闷。代码都看不懂。版主的代码我就没看懂groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A',这两句什么意思。而且我用的是vs2008,不知道是不是版本的原因,直接替换成版主的代码,运行时说无法将string隐式转换成bool型。我只好再次修改啰嗦点:var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked); if(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A') { textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答正确!" ; } else textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答错误!";这样运行成功了。少了一个括号,不好意思。和2008无关。s = a + b ? c : d必须写成s = a + (b ? c : d)版主的功夫果然了得,请问版主这些方法是看MSDN还是看别人的博客知道的?我现在了解的方法、属性都极少,结果好多问题只用逻辑解决,代码量过大。 请教高手,SQL批量修改的问题; 小妹请教RSA对XML加密部分机器报错疑问??? 问个调用父类方法的 如何在c#用FindWindow和SendMessage进行win程序的安装 oracle连接错误,请大家帮忙解决 谁告诉我bridge模式主要的用在什么地方,最好有实例,代码有注释的。 数字比较大小 在.net下怎么封IP 关于水晶报表的发布问题,请指教,先谢谢拉! 解析pdf文件的一些疑问 C#winform如何在datagridview中添加控件 动态修改报表xml文件但ReportViewer显示还是报错的问题
你可以在foreach之外赋值一个布尔变量all_false,为true,在foreach里面,只要见到Checked为true,就赋值all_false为false,循环完毕进行判断,如果all_false为true,就把textbox3赋值为未选择的内容。个人拙见!
我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会c和c++的一些基础知识。现在凭c和c++的那点基础重新弄程序玩。有点郁闷。代码都看不懂。
版主的代码我就没看懂groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A',这两句什么意思。而且我用的是vs2008,不知道是不是版本的原因,直接替换成版主的代码,运行时说无法将string隐式转换成bool型。我只好再次修改啰嗦点:
var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked);
if(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A')
{
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答正确!" ;
}
else
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答错误!";
这样运行成功了。
谢谢,我只是在用foreach循环,具体这个循环什么情况我还真不了解。用你的方法解决问题了。同时也了解了foreach循环的原理。
我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会c和c++的一些基础知识。现在凭c和c++的那点基础重新弄程序玩。有点郁闷。代码都看不懂。
版主的代码我就没看懂groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A',这两句什么意思。而且我用的是vs2008,不知道是不是版本的原因,直接替换成版主的代码,运行时说无法将string隐式转换成bool型。我只好再次修改啰嗦点:
var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked);
if(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A')
{
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答正确!" ;
}
else
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答错误!";
这样运行成功了。少了一个括号,不好意思。和2008无关。
s = a + b ? c : d
必须写成
s = a + (b ? c : d)
我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会c和c++的一些基础知识。现在凭c和c++的那点基础重新弄程序玩。有点郁闷。代码都看不懂。
版主的代码我就没看懂groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked)和rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A',这两句什么意思。而且我用的是vs2008,不知道是不是版本的原因,直接替换成版主的代码,运行时说无法将string隐式转换成bool型。我只好再次修改啰嗦点:
var rb = groupBox1.Controls.OfType<RadioButton>().SingleOrDefault(x => x.Checked);
if(rb != null && rb.Name.Last() - '1' == chuandishuju.daan.ToUpper().Trim().First() - 'A')
{
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答正确!" ;
}
else
textBox3.Text = "正确答案是:" + chuandishuju.daan.Trim() + " 回答错误!";
这样运行成功了。少了一个括号,不好意思。和2008无关。
s = a + b ? c : d
必须写成
s = a + (b ? c : d)版主的功夫果然了得,请问版主这些方法是看MSDN还是看别人的博客知道的?我现在了解的方法、属性都极少,结果好多问题只用逻辑解决,代码量过大。