對於每對無線電按鈕(或每組,對於是/否問題)。您必須檢查是否至少(實際上只有)其中一個選項被選中。那是你想檢查是否:
(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