隐藏表单中的所选复选框

时间:2017-01-13 23:09:34

标签: c# forms winforms checkbox controls

我对复选框有一点问题。我想要隐藏按下按钮时选中的框。

我写了一段像

这样的代码
foreach (CheckBox button in Controls)
        {
            if (button.Checked == true)
            {
                button.Hide();
            }
        }

它有效,但我遇到了逻辑错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

问题是使用Controls集合。此集合包含表单容器托管的所有控件。尝试将此集合中的控件直接分配给CheckBox会导致转换错误。

由于表单中并非所有控件都是复选框,因此您只需将逻辑应用于复选框控件。

使用OfType IEnumerable extension

很容易
foreach (CheckBox button in this.Controls.OfType<CheckBox>())
{
    if (button.Checked)
        button.Hide();
}

这也有利于直接分配给CheckBox类型的变量。