我有winform应用程序(.NET 4.0)
有没有办法手动设置一组单选按钮?
我有四个单选按钮,其中两个在组框内,另外两个在该框外。如何将它们全部设置为同一个组?
我有winform应用程序(.NET 4.0)
有没有办法手动设置一组单选按钮?
我有四个单选按钮,其中两个在组框内,另外两个在该框外。如何将它们全部设置为同一个组?
这可能已经在另一篇文章中得到了回答,听起来是一样的:
在 C# 中使用不同的父控件对 Windows 窗体单选按钮进行分组
这是公认的解决方案:
恐怕你必须手动处理这个......实际上并没有那么糟糕,你可以将所有 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 panel
我不确定这在 WinForms 中是否可行。
根据文档:
给定容器(如 Form)中的所有 RadioButton 控件构成一个组。
您可以自己创建课程
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; }
}
}
}
}
GroupName 是 Web.UI.RadioButton 中用于将一组单选按钮分组为一个单元的属性。所有具有相同 GroupName 值的单选按钮将组成一个组。
但是,此功能在 winforms 中不可用。
所以在winforms中对单选按钮进行分组的唯一方法是将它们放在同一个容器中(通常是一个组合框)。
有一个称为“验证”组的属性或类似的属性,它将所有控件分组到一个验证中。仅检查其中之一。其他的取消勾选。