我有这部分代码:(在按钮的点击事件中)
foreach (RadioButton rb in grbFiltro.Controls.OfType<RadioButton>())
{
if (((RadioButton)rb).Checked)
{
switch (true)
{
case rbt1.Checked:
//do something
break;
case rbt2.Checked:
//do something
break;
case rbt3.Checked:
//do something
break;
}
}
}
但是在&gt;中将radiobutton转换为字符串时出错了case rbt1.Checked
我如何解决这个问题,或者我还能使用其他什么?
答案 0 :(得分:1)
var rb = grbFiltro.Controls.OfType<RadioButton>()
.SingleOrDefault(rb => rb.Checked.GetValueOrDefault()) as RadioButton;
if (rb!=null)
switch (rb.Name)
{
case "button1":
//do something
break;
case "button2":
//do something
break;
case "button3":
//do something
break;
}
答案 1 :(得分:1)
你有25个按钮所以我可能会做类似
的事情 IEnumerable<RadioButton> buttons = grbFiltro.Controls.OfType<RadioButton>();
foreach (var Button in buttons)
{
if (Button.Checked)
{
//Do Something
}
}
如果您需要对每个按钮执行不同的操作,那么您将拥有一个基于您需要的if / else链,但我猜您想要存储所选的值并对其执行某些操作。
答案 2 :(得分:0)
您还可以在CheckedChange上添加侦听器,并始终将当前选定的单选按钮存储在字段中。然后,只需点击确认按钮,即可阅读该值。如果你有10个以上的无线电按钮
,这很方便private RadioButton selectedButton;
//handler for Radio Buttons.
private void onRadioChange(Object sender, EventArgs e){
if (((RadioButton)sender).Checked)
this.selectedButton = (RadioButton)sender;
}
// handler for confirm button.
private void confirm(Object sender, EventArgs e){
MessageBox.show(selectedButton.name + " selected");
}
untestet,但方法应该有效。