2016-08-12 1 views
1

나는 여러 라디오 버튼이 GroupBox에 저장된 Windows Forms 애플리케이션이 있습니다. 선택한 라디오 버튼을 기반으로 다른 GroupBox을 활성화해야합니다.Groupbox의 RadioButton이 선택되었는지 확인하십시오.

groubBox.Enter은 (는) EventHandler입니다. 거기에 내 방식대로 할 수있는 방법이 있습니까 아니면 각 radiobutton.CheckedChanged에 대한 처리기를 만들어야합니까?

편집

응용 프로그램의 워크 플로우는 다음과 같습니다 GroupBox가 활성화됩니다 →

파일이 선택됩니다 → Panel/ComboBox, TextBox 선택한 RadioButton

+1

모든 라디오 버튼에서 사용하는 하나의 핸들러를 만들 수 있습니다. 물론이 핸들러에서 다른 라디오 버튼을 구별해야합니다. 그게 당신을 어떤 식 으로든 도울까요? – Lundsern

+0

선택한 라디오 버튼이 있는지 확인하려면 가장 간단한 옵션은 linq 쿼리를 사용하는 것입니다. 그러나 체크 박스 라디오 버튼을 기반으로 그룹 박스를 활성화 또는 비활성화하려는 주된 요구 사항에 가장 적합한 솔루션은 데이터 바인딩을 사용하는 것입니다. –

+0

또한 문제의 일부로 솔루션을 게시하지 마십시오. 미래의 독자들에게는 혼란 스러울 것입니다. 최선의 해결책을 받아 들일 수 있고, 유용한 대답을 upvote 할 수 있으며, 더 나은 대답이 있다고 생각한다면 자신의 답변을 게시 할 수 있습니다. 또한 다른 유용한 대답에 연결하려면 주석을 사용하십시오. –

답변

1

하자에 따라 활성화됩니다 gbRadioButtons은 GroupBox의 이름이어야합니다. 그런 다음 특정 Groupbox의 각 radioButton을 반복하고 선택 여부를 확인합니다. b

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 이벤트 핸들러는 응답자 예를 들어

에서의 GroupBox를 참조 RadioButton.Tag을 설정 모든 라디오 버튼
하나를 만들기 : 예 다음 코드를 사용하여 (검사 할이 코드를 포함) 그것은

01의 모든 자식 컨트롤을 가능하게 할 것이다 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; 
}