对于每对无线电按钮(或每组,对于是/否问题)。您必须检查是否至少(实际上只有)其中一个选项被选中。那是你想检查是否:
(radio1.Checked) || (radio2.Checked)
为什么这样?因为这样你问的是radio1是否被选中,否则如果radio2被选中。否则,如果您保留:
(radio1.Checked) && (radio2.Checked)
您在询问是否选中radio1并且是否选中radio2。这不可能,就像要求回答“是”和“否”一样。当然,这永远不会被评估为真实的,除非宇宙中有某种错误。
从您的评论:
//none of them aare selected
我猜你试图使用d”摩根定律,它适用于该情况下指出:
(radio1.Checked) || (radio2.Checked) == !((!radio1.Checked) && (!radio2.Checked))
你可以阅读下面的代码:
!((!radio1.Checked) && (!radio2.Checked))
如下所示:如果为false(radio1没有被选中,而radio2没被选中)。这将是错误的唯一,如果两者都没有选中,当你想返回false(这是你想要当计算结果为true返回true),它是这样的:
if (!((!radio1.Checked) && (!radio2.Checked)))
{
return true;
}
else
{
return false;
}
通过,如果,你最终扭转了与:
if ((!radio1.Checked) && (!radio2.Checked))
{
return false;
}
else
{
return true;
}
这是接近你有什么,但不完全相同的事情。因此,拟议实施的方法是[我改变了自己的风格,以矿山]:
public bool CheckRadioButtons(RadioButton radioButtonA, RadioButton radioButtonB)
{
//none of them are selected
if ((!radioButtonA.Checked) && (!radioButtonB.Checked))
{
return false;
}
else
{
MessageBox.Show("You forgot to select a RadioButton!");
return true;
}
}
而且,我想你可能要拿出在MessageBox从那里你可以压缩方法:
public bool CheckRadioButtons(RadioButton radioButtonA, RadioButton radioButtonB)
{
return !((!radioButtonA.Checked) && (!radio2.radioButtonB));
}
的推广会是这样的:
public bool CheckRadioButtons(params RadioButton[] radioButtons)
{
foreach (RadioButton radioButton in radioButtons)
{
if (radioButton.Checked)
{
return true;
}
}
return false;
}
您可能仍然显示messegebox在来电者,如果你喜欢[我认为这是一件好事,分开这些问题。此外,如果你正在使用LINQ [Remeber加上“使用System.Linq的”在YOUT文件或命名空间块,avaliable形式.NET 3.5的顶]:
public bool CheckRadioButtons(params RadioButton[] radioButtons)
{
return radioButtons.Any(radioButton => radioButton.Checked);
}
鉴于这个简单,你可以考虑跳过为此完全创建一个方法。这里是你怎么可能只用两个单选按钮调用此无需额外的方法:
(new RadioButton[]{radioButtonA, radioButtonB}).Any(radioButton => radioButton.Checked);
当然它是简单的情况作为一个只有两个单选按钮的开销,所以有一种方法可以让你重载它简单的例子(比如2个RadioButtons和3个RadioButtons)。
“它没有工作”是一个不好的问题描述。什么没有用?有错误吗?请阅读:http://tinyurl.com/so-hints – Oded 2011-06-10 20:56:30
是你的逻辑权利?看起来你的回归真假是相反的。 – 2011-06-10 20:57:32
您无法在正确设置的单选按钮中选择所有选项。在这里你正在检查'A && B',这永远不会是这样。你应该检查'A || B'为用户选择一个**或**另一个。在极端情况下,您可以检查'!A &&!B',因为应该检查其中一个。 – ChrisF 2011-06-10 20:58:27