我有winform应用程序(.NET 4.0)
有没有办法手动设置一组单选按钮?
我有四个单选按钮,其中两个位于组合框内,另外两个位于该框外。如何将所有这些设置为同一组?
答案 0 :(得分:7)
这可能已在另一篇文章中得到解答,听起来是一样的:
Grouping Windows Forms Radiobuttons with different parent controls in C#
这是公认的解决方案:
我担心你必须手动处理这个...它并不是那么糟糕 实际上,您可以将所有RadioButton存储在列表中, 并为所有这些使用单个事件处理程序:
private List<RadioButton> _radioButtonGroup = new List<RadioButton>(); private void radioButton_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked) { foreach(RadioButton other in _radioButtonGroup) { if (other == rb) { continue; } other.Checked = false; } } }
编辑:这是另一个问同样事情的问题: Radiobuttons as a group in different panels
答案 1 :(得分:2)
我不确定这是否可以在WinForms中使用。
根据文件:
给定容器中的所有RadioButton控件(例如Form)构成一个组。
您可以自己创建课程
public class ButtonGroup {
private IList<RadioButton> radiogroup;
public ButtonGroup(IEnumerable<RadioButton> selection) {
radiogroup = new List<RadioButton>(selection);
foreach (RadioButton item in selection) {
item.CheckedChanged += uncheckOthers;
}
}
private void uncheckOthers(object sender, EventArgs e) {
if (((RadioButton)sender).Checked) {
foreach (RadioButton item in radiogroup) {
if (item != sender) { item.Checked = false; }
}
}
}
}
答案 2 :(得分:1)
GroupName是Web.UI.RadioButton中使用的属性,用于将一组无线电按钮分组为一个单元。具有相同GroupName值的所有单选按钮将形成一个组。
此功能在winforms中不可用。
因此,在winforms中对radiobuttons进行分组的唯一方法是将它们放在同一个容器中(通常是一个分组框)。
答案 3 :(得分:-1)
有一个名为“验证”组的属性或类似的东西,它将所有控件组合成一个验证。只检查其中一个。其他人取消选中。