本帖最后由 huoyan6878 于 2013-10-13 18:37:53 编辑

解决方案 »

  1.   

    本帖最后由 caozhy 于 2013-10-13 21:27:27 编辑
      

  2.   

    你的逻辑好像有问题啊,总的foreach循环,你遍历每一个RadioButton,只要没有点击,就执行你加的else子句。比如你的前面已经选择了,最后一个没选择,那么textbox3就会被赋值没有选择的内容。
    你可以在foreach之外赋值一个布尔变量all_false,为true,在foreach里面,只要见到Checked为true,就赋值all_false为false,循环完毕进行判断,如果all_false为true,就把textbox3赋值为未选择的内容。个人拙见!
      

  3.   


    我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会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() + "     回答错误!";
    这样运行成功了。
      

  4.   


    谢谢,我只是在用foreach循环,具体这个循环什么情况我还真不了解。用你的方法解决问题了。同时也了解了foreach循环的原理。
      

  5.   


    我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会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)
      

  6.   


    我用版主的代码,确实很简洁。我虽然也是计算机专业毕业的,但是毕业很多年了,而且当时仅仅算是学会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还是看别人的博客知道的?我现在了解的方法、属性都极少,结果好多问题只用逻辑解决,代码量过大。