【问题标题】:How to disable checkBox if other checkBox is checked c#如果选中其他复选框,如何禁用复选框 c#
【发布时间】:2021-08-27 13:03:30
【问题描述】:

我的 Windows 窗体应用程序中有一个复选框数组。我想知道如果选中了该数组中的一个或多个复选框,是否有办法禁用该数组的复选框?

例如: 如果选中 A,则禁用 B、C、D、E 如果 A, 和 C 被选中, B, D, E 被禁用

很抱歉给您带来了困惑。在以下示例中,选中了 A、C、E。我想要的是B,D然后是禁用

[x]A []B [x]C []D [x]E

这是我的数组列表

另一个例子:

这个例子显示 D 被选中,那么 A、B、C 和 E 应该被禁用

[]A []B []C [x]D []E

代码:

CheckBox[] myCheckBoxArray = new CheckBox[5];

myCheckBoxArray[0] = checkBoxA 
myCheckBoxArray[1] = checkBoxB
myCheckBoxArray[2] = checkBoxC 
myCheckBoxArray[3] = checkBoxD 
myCheckBoxArray[4] = checkBoxE 

【问题讨论】:

  • 广播组不是更适合这个吗?
  • 如果检查 A 会禁用 C,那么有人怎么会同时检查 A 和 C?
  • 但是,如果您在选择一个选项时禁用所有其他选项,您将如何选择它们?还是有些选项可以一起选择,而其他选项不能?
  • @DragonBorn,我重读了你的问题,但我仍然想知道同样的事情。
  • 我同意@adv12,您声明“A 已检查,B、C、D、E 已禁用”,因此不能同时检查 A 和 C。请澄清您的问题,因为目前没有任何意义。

标签: c# checkbox


【解决方案1】:

我认为你所追求的是一个简单的'if'语句:

if (checkBoxA.Checked == true)
{
    checkBoxB.Checked = false;
    ....
}

等等等等。您还可以使用“&&”运算符同时选中多个框,如下所示:

if (checkBoxA.Checked == true && checkBoxB.Checked == false)
{ do.something(); }

要将其应用于您的数组,只需附加以下内容:

if (checkBoxA.Checked == true)
{
    myCheckBoxArray[i].Checked = false;
}

您不能按照您要求的方式对数组的各个部分进行分组 - 如果某些数组成员满足特定条件,您也许可以调用它们,但您不一定知道在您更改他们的“已检查”状态之前,他们的状况。在这种情况下,您必须要么更改整个数组,要么逐个更改每个复选框。或者,在 if 语句中创建数组。然而,这是一个昂贵的过程,而且在很大程度上毫无意义。

【讨论】:

    【解决方案2】:

    我已经解决了我的问题

     CheckBox[] checkBox1 = new CheckBox[5];
                checkBox1 [0] = checkBoxA;
                checkBox1 [1] = checkBoxB;
                checkBox1 [2] = checkBoxC;
                checkBox1 [3] = checkBoxD;
                checkBox1 [4] = checkBoxE;
    
                foreach(CheckBox items in checkBox1 )
                {
                    if (!items.Checked)
                    {
                        items.Enabled = false;
                    }
                }
    

    【讨论】:

    • 您想在点击按钮时执行此操作?
    • 您的意思是让用户无法检查它们吗?对不起,我错误地假设您只是想确保在给定时间只能检查某些复选框。但是请记住,您的这种方法只会禁用整个数组,而不管检查状态如何。
    • @ElectricRouge,不是按钮单击,而是下拉框。但我已经解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多