我可以为不同的部分重复使用具有相同值的相同单选按钮吗?
Can I reuse the same radiobutton with same value for different section?
如下图所示,我使用单选按钮收集用户的反馈。我是否需要为所有这 8 个按钮提供唯一名称才能获取数据?或者有没有其他方便的方法来只声明 4 个按钮并在每个部分中重复使用它们?
请查看此图片以便更好地理解:
如果您可以创建一种方法将符合条件的单选按钮放在一个序列中,则不需要名称。您可以使用 LINQ 获取选中的那个:
private IEnumerable<RadioButton> RadioButtons => ...
private RadioButton SelectedRadioButton => this.RadioButtons
.Where(radioButton => radioButton.Checked)
.FirstOrDefault();
一种方法是在一个控件(例如 GroupBox)中获取所有单选按钮
IEnumerable<RadioButton> GetRadioButtons(Control control)
{
return control.Controls.OfType<RadioButton>();
}
如果所有的RadioButtons都有相同的事件处理器,那么你可以使用参数sender:
private void OnRadioButtonCheckedChange(object sender, ...)
{
RadioButton radioButton = (RadioButton)sender;
if (radioButton.Checked)
this.RadioButtonSelected(radioButton);
else
this.RadioButtonDeselected(radioButton);
}
如下图所示,我使用单选按钮收集用户的反馈。我是否需要为所有这 8 个按钮提供唯一名称才能获取数据?或者有没有其他方便的方法来只声明 4 个按钮并在每个部分中重复使用它们?
请查看此图片以便更好地理解:
如果您可以创建一种方法将符合条件的单选按钮放在一个序列中,则不需要名称。您可以使用 LINQ 获取选中的那个:
private IEnumerable<RadioButton> RadioButtons => ...
private RadioButton SelectedRadioButton => this.RadioButtons
.Where(radioButton => radioButton.Checked)
.FirstOrDefault();
一种方法是在一个控件(例如 GroupBox)中获取所有单选按钮
IEnumerable<RadioButton> GetRadioButtons(Control control)
{
return control.Controls.OfType<RadioButton>();
}
如果所有的RadioButtons都有相同的事件处理器,那么你可以使用参数sender:
private void OnRadioButtonCheckedChange(object sender, ...)
{
RadioButton radioButton = (RadioButton)sender;
if (radioButton.Checked)
this.RadioButtonSelected(radioButton);
else
this.RadioButtonDeselected(radioButton);
}