循环访问 C# 中复选框的控件

本文关键字:控件 复选框 访问 循环 | 更新日期: 2023-09-27 17:55:08

我想浏览form.tab中的所有复选框并将它们标记为未选中。我发现这是正确的决定:

     foreach (Control c in this.Controls)
     {
         CheckBox cb = c as CheckBox;
         if (cb! = null & & cb.Checked)
         {
            cb.Checked = false;
         }
     }

但它不起作用!我不明白为什么。我看了调试器,cb null.为什么会这样?我哪里做错了?

循环访问 C# 中复选框的控件

复选框可能包含

在某个容器中,因此您必须执行一些递归查找或直接迭代此容器的 Controls-集合。

private void FindControls(Control Page)
{
     foreach (Control ctrl in this.Controls)
     {
          if (ctrl is CheckBox)
          {
              if (cb! = null & & cb.Checked)
              {                   
                   cb.Checked = false;                
              }
          }
          else 
          {
              if (ctrl.Controls.Count > 0)
              {
                   FindControls(ctrl);
              }
          }
     }
}

尝试将第一行从:

this.Controls

this.tab.Controls

当前代码直接在窗体上的控件中循环。您需要循环浏览选项卡上的控件。

我认为复选框控件的形式可能不是其他容器,例如组框或面板