Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制复选框的问题_C# - Fatal编程技术网

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 than
Me
表示实际形式,在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
。。