많은 라디오 버튼이있어서라디오 버튼 및 스위치
처럼 보입니다.if (rbFrenchImp.Checked)
{
}
else if (rbFrenchMet.Checked)
{
}
else if (rbEnglishImp.Checked)
{
}
else if (rbFrenchEuro.Checked)
{
}
//etc...
그래서 라디오 버튼으로 스위치 케이스를 사용할 수 있습니까? 그렇다면 어떻게?
많은 라디오 버튼이있어서라디오 버튼 및 스위치
처럼 보입니다.if (rbFrenchImp.Checked)
{
}
else if (rbFrenchMet.Checked)
{
}
else if (rbEnglishImp.Checked)
{
}
else if (rbFrenchEuro.Checked)
{
}
//etc...
그래서 라디오 버튼으로 스위치 케이스를 사용할 수 있습니까? 그렇다면 어떻게?
예를 수행 할 수 있습니다
같은 CheckChanged (또는 유사) 라디오 버튼의 각 이벤트 핸들러를 subcribe. 그런 다음 아래와 같은 코드를 입력하십시오.
RadioButton btn = sender as RadioButton;
if(btn!= null && btn.IsChecked)
{
Switch(btn.Name)
{
case "rbFrenchImpl":
break;
...
}
}
이 코드는 모든 유형의 프레임 워크에서 작동합니다. 당신은 ASP.NET을 사용하는 경우
Dang.따라서 라디오 버튼 이름을 하드 코딩해야합니다. –
2017 체크인시 - 케이스에 nameof (rbFrenchImpl)를 사용할 수 있습니다! – Squirrelkiller
RadioButtonList
을 의미합니까? 그렇다면 .SelectedValue
을 찾아보십시오.
방금 라디오 버튼을 선택했다면 옵션을 사용할 수 있습니다. 그러나 나는 아마도 당신이 가지고있는 계획을 RadioButtonList으로 대체하여 어떤 종류의 성공을 달성 할 수 있다고 생각합니다.
당신은 radiobuttonlist을 사용하고이 example하지 말자에서 같은 전환 창 양식에 대해 또는
//create a global radioCheckStatus
RadioCheckStatus radioStatus = RadioCheckStatus.none;
//declare your enum
private enum RadioCheckStatus
{
none = 0,
rbFrenchImp = 1,
rbFrenchMet = 2,
rbEnglishImp = 3,
rbFrenchEuro = 4
}
//On CheckedChanged event of your radioButtons set it to changed radioButtons enum
private void rbFrenchImp_CheckedChanged(object sender, EventArgs e)
{
radioStatus = RadioCheckStatus.rbFrenchImp;
}
// whereever you want to check the selected value
switch (radioStatus)
{
case RadioCheckStatus.rbFrenchImp:
{
break;
}
case RadioCheckStatus.rbFrenchEuro:
{
break;
}
case RadioCheckStatus.rbEnglishImp:
{
break;
}
case RadioCheckStatus.rbFrenchMet:
{
break;
}
default:
break;
}
너무 복잡하기 때문에 각 라디오 버튼에 대해 새 CheckChanged 핸들러를 정의해야합니다. 열거 형 선언 등 ... –
radiobuttons에 eventHandler가없는 경우 스위치를 사용하지 않습니다. OP는 if - else if를 switch case로 대체 할 수있는 방법을 요청했고 다른 컨트롤의 이벤트 핸들러에서 컨트롤이 만들어지고있는 경우에만이 방법이 사용됩니다 (솔루션도 작동하지 않음). – Pabuc
이것이 원래의 솔루션보다 나은 이유는 무엇입니까? –
이 약간 해키 느낌 WPF 알고 있지만, 당신은을 포함하는 Dictionary<RadioButton, Action>
을 설정할 수 있습니다
Dictionary<RadioButton, Action> _rbMethods = new Dictionary<RadioButton, Action>();
로드 (매개 변수가 void
방법이다의 Action
대리인 서명과 일치) RadioButton
제어 및 대응 방법 사이의 매핑 형태,지도에 버튼과 대응 방법을 추가
_rbMethods.Add(rbFrenchImp, FrenchImpAction);
_rbMethods.Add(rbFrenchMet, FrenchMetAction);
_rbMethods.Add(rbEnglishImp, EnglishImpAction);
을 다음을 수행 할 수 있습니다 아주 쉽게 (서로 다른 그룹에있는 경우, 또는 버튼) 체크 라디오 버튼 방법을 해당 호출 :
foreach (RadioButton key in _rbMethods.Keys.Where(rb => rb.Checked))
{
_rbMethods[key]();
}
여러 개의 라디오 버튼을 사용하여 "if 문"을 사례 스위치로 변경 한 가장 좋은 방법은 다음과 같습니다. 라디오 버튼 만 있으면 속성 아래에서 이벤트 탭을 선택하고 "확인 됨"이벤트 아래에서 radioButton_Click을 선택하면됩니다. 앞으로 이것이 도움이되기를 바랍니다.
var rbResult = from rb in gbState.Controls.OfType<RadioButton>()
where rb.Checked
select rb;
이 당신에게 <IENumerable>RadioButton
을 줄 것이다 :
private void radioButton_Click(object sender, RoutedEventArgs e)
{
RadioButton radioBtn = (RadioButton)sender;
if (radioBtn.IsChecked == true)
{
switch (radioBtn.Name)
{
case "radioBtnName1":
//do something
break;
case "radioBtnName2":
//do something
break;
case "radioBtnName3":
//do something
break;
case "radioBtnName4":
//do something
break;
}
}
}
여기 Linq에를 사용하여 솔루션이다. RadioButton은 GroupBox와 같은 컨테이너에 있어야하므로이 IENumberable에는 1 또는 0 개의 요소 만 포함될 수 있습니다.
나는 이것이 작동해야한다고 생각합니다. 그렇지 않으면 제발 수정하십시오
WinForms, WPF 또는 WebForms입니까? –
웹 양식을 사용하고 있습니까? 그렇다면 왜 'RadioButtonList'를 사용하지 않겠습니까? –
@ Mr. TA : 중요합니까? 이것은 라디오 버튼에 관한 질문이 아니며 여러 부울 명령문이있는'switch '에 관한 것입니다. – Bobby