C#多个复选框的集合

时间:2012-08-18 03:39:51

标签: c# checkbox

好吧,我只是直截了当地说,我有20个复选框,如下所示:

我要做的是让它一次只能检查每列(上面编号)中的1个复选框,我原本只是要经历每个“已检查”事件并使其成为当其中一个被检查时,它会取消选中列中的其他3个,但我意识到这不是很实用,而且它非常长,因为我总共有80个复选框。

我想知道是否有人能指出我正确的方向?

2 个答案:

答案 0 :(得分:0)

使用此:

public class ColumnCheckBox:CheckBox
{
    public int ColumnIndex;
}

void columnCheckBox1_CheckedChanged(object sender, EventArgs e)
{
    int columnIndex = ((ColumnCheckBox)sender).ColumnIndex;
}

然后仅选中该列的复选框。显然,您必须拥有复选框列表List<List<CheckBox>> CheckBoxList才能执行此操作 foreach (ColumnCheckBox cb in CheckBoxList(columnIndex))

答案 1 :(得分:0)

就像saul672所说,你应该只使用单选按钮,因为这正是他们所设计的。但是,如果您仍然希望使用复选框来实现这一点,因为您喜欢方形而不是方形,这就是我要做的:

您必须将复选框放在一个容器中,该容器只包含同一列中的复选框。然后,将此事件添加到每个复选框。

private void CheckedChanged(object sender, EventArgs e)
{
    CheckBox cb = (CheckBox) sender;
    if (cb.Checked)
    {
        foreach (CheckBox control in cb.Parent.Controls)
        {
            if (control != cb)
                control.Checked = false;
        }
    }
}