C# 控制复选框的问题
我试图使它成为这样,当一个复选框被选中时,所有其他复选框都被选中。我知道还有其他的方法,但我该怎么做呢?此外,如果用户试图取消选中当前选中的框,则应保持选中状态C# 控制复选框的问题,c#,C#,我试图使它成为这样,当一个复选框被选中时,所有其他复选框都被选中。我知道还有其他的方法,但我该怎么做呢?此外,如果用户试图取消选中当前选中的框,则应保持选中状态 private void checkState(CheckBox b) { for (int i = 0; i < cb.Count; i++) { if (cb[i] != b) {
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;
}
private void checkState(复选框b)
{
对于(int i=0;i
对于这种行为,您应该使用单选按钮(一组)而不是复选框,因为这是它们的自然行为
参考资料:
更新:如果您仍然想使用检查按钮
进行更新,即使您违背了我们的建议,您也可以这样做:
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
Notice:由于我是用VB编写的,因此Notice thanMe
表示实际形式,在C#中被this
替换。无论如何,您应该将您的复选框组的父控件放在那里
2º在每个复选框的单击事件中调用此函数。我更希望单击
而不是CheckedChanged
不强制递归地再次调用函数
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
modify(sender)
End Sub
用单选按钮怎么样?是否需要使用复选框?我在过去尝试过,但对于手头的任务来说效果不佳。有没有办法使用复选框?为什么它们不起作用?当然,您可以在父控件中获取所有的复选框,检查它们是否是您正在更改的,如果不是,您可以更改其值。将在一段时间内更新答案。是否有方法使用复选框进行更新?当然,但用户也会感到惊讶。所以这将是一个错误。您可以有复选框列表并取消选中除发件人之外的所有人,但正如我所说的:这将是非标准行为。手头的任务有什么特别之处?你所需要做的就是把这些单选按钮放在一个组中,可能是一个组框,这样用户就可以很容易地看到它们属于一起。这个答案是a)在VB中,问题明确地问C#和b)闻起来有点无休止的循环(不确定,不过,如果我错了,请原谅),C)覆盖了我的所有控件。控件,OP提供的不是数组或复选框列表cb
。。