C#多个复选框集合
我要直截了当地说,我有20个复选框,像这样排列: 我想做的是使每一列(上面编号的)中一次只能选中一个复选框,我最初只是想检查每个“选中”项事件并使其成为这样,当其中一个被选中时,它将取消选中列中的其他3个,但我意识到这并不实际,而且它非常长,因为我总共有80个复选框 我想知道是否有人能给我指出正确的方向?使用这个:C#多个复选框集合,c#,checkbox,C#,Checkbox,我要直截了当地说,我有20个复选框,像这样排列: 我想做的是使每一列(上面编号的)中一次只能选中一个复选框,我最初只是想检查每个“选中”项事件并使其成为这样,当其中一个被选中时,它将取消选中列中的其他3个,但我意识到这并不实际,而且它非常长,因为我总共有80个复选框 我想知道是否有人能给我指出正确的方向?使用这个: public class ColumnCheckBox:CheckBox { public int ColumnIndex; } void columnCheckBox1
public class ColumnCheckBox:CheckBox
{
public int ColumnIndex;
}
void columnCheckBox1_CheckedChanged(object sender, EventArgs e)
{
int columnIndex = ((ColumnCheckBox)sender).ColumnIndex;
}
然后只选中该列中的复选框。显然,您必须有复选框列表List CheckBoxList
,这样您就可以
foreach(CheckBoxList(columnIndex)中的ColumnCheckBox cb)
就像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;
}
}
}
所以你想让它们像单选按钮一样工作??如果更改它们,只需为每个列设置一个组名