2016-08-12 19 views
1

我有一個Windows窗體應用程序,其中有幾個單選按鈕存儲在GroupBox中。我需要根據所選的單選按鈕啓用不同的GroupBox獲取Groupbox中的任何RadioButton是否被選中

groubBox.Enter似乎並不是EventHandler我正在尋找。有沒有辦法按我的方式做,或者我必須爲每個radiobutton.CheckedChanged創建一個處理程序?

編輯

應用程序的工作流程是:

一個文件被選中→將GroupBox被啓用→A Panel/ComboBoxTextBox得到取決於所選擇的RadioButton

+1

您可以創建一個所有單選按鈕使用的處理程序。當然,您必須區分此處理程序中的不同單選按鈕。這會以任何方式幫助你嗎? – Lundsern

+0

要檢查是否有任何選中的單選按鈕,最簡單的選項是使用linq查詢。但是,對於基於選中的單選按鈕啓用或禁用組框的主要要求,最好的解決方案是使用數據綁定。 –

+0

也請不要將解決方案作爲問題的一部分發布。這會讓未來的讀者感到困惑。你可以接受最好的解決方案,如果你認爲自己有更好的答案,你可以提出有用的答案,併發布自己的答案。也鏈接到另一個有用的答案,只需使用評論:) –

回答

1

讓啓用gbRadioButtons是GroupBox的名稱,然後您可以遍歷該特定Groupbox中的每個radioButton並檢查它是否被選中使用下面的代碼Y(包括該代碼要檢查):

bool isAnyRadioButtonChecked = false; 
foreach (RadioButton rdo in gbRadioButtons.Controls.OfType<RadioButton>()) 
{ 
    if (rdo.Checked) 
    { 
     isAnyRadioButtonChecked=true; 
     break; 
    } 
} 
if (isAnyRadioButtonChecked) 
{ 
    // Code here one button is checked 
} 
else 
{ 
    // Print message no button is selected 
} 
+0

nvm,你的答案是解決方案。非常感謝你 –

0

創建CheckedChanged事件處理程序,一個爲所有單選按鈕
設置RadioButton.Tag引用GroupBox其答辯人

例如,在構造

public YourForm() 
{ 
    radioButton1.Tag = groupBox1; 
    radioButton2.Tag = groupBox2; 
    radioButton3.Tag = groupBox3; 

    radioButton1.CheckedChanged += radioButtons_CheckedChanged; 
    radioButton2.CheckedChanged += radioButtons_CheckedChanged; 
    radioButton3.CheckedChanged += radioButtons_CheckedChanged; 
} 

void radioButtons_CheckedChanged(object sender, EventArgs e) 
{ 
    RadioButton button = sender as RadioButton; 
    if (button == null) return; 

    GroupBox box = button.Tag as GroupBox 
    if (box == null) return; 

    box.Enabled = button.Checked; 
} 

啓用GroupBox將使所有子控件在它

相關問題