控制复选框时出现问题



我试图让它在选中复选框时,所有其他复选框都变为未选中状态。我知道还有其他一些方法可以做到这一点,但是我该怎么做呢?此外,如果用户尝试取消选中当前选中的框,则应保持选中状态。

private void checkState(CheckBox b)
{
for (int i = 0; i < cb.Count; i++)
{
if (cb[i] != b)
{
cb[i].Checked = false;
}
//else
//{
//    cb[i].Checked = true;
//}
}
b.Checked = true;
}

对于此行为,您应该使用RadioButton(一组)而不是复选框,因为这是他们的自然行为。

引用:

单选按钮 - MSDN

更新:如果您仍然想用checkbutton来做,即使不顾我们的建议,您也可以做这样的事情:

1º 创建一个函数来修改控件组。检查它们是否正在更改。如果没有,则需要解开支票

Private Sub modify(ByVal sender As CheckBox)
For Each item As CheckBox In Me.Controls
If (item.Equals(sender) = False) Then
item.Checked = False
End If
Next
End Sub

注意:由于我是用 VB 编写的,因此注意Me表示实际形式,并在 C# 中替换为this。无论如何,您应该将checkbox组的父控件放在那里。

2º 在每个复选框的click事件中调用此函数。我宁愿click而不是CheckedChanged不要强制递归地第二次调用该函数。

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
modify(sender)
End Sub

最新更新