好吧,我只是直截了当地说,我有20个复选框,如下所示:
我要做的是让它一次只能检查每列(上面编号)中的1个复选框,我原本只是要经历每个“已检查”事件并使其成为当其中一个被检查时,它会取消选中列中的其他3个,但我意识到这不是很实用,而且它非常长,因为我总共有80个复选框。
我想知道是否有人能指出我正确的方向?
答案 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;
}
}
}