【问题标题】:C# Foreach to change certain object properties?C# Foreach 更改某些对象属性?
【发布时间】:2012-05-07 12:21:58
【问题描述】:

我有一个带有复选框和标签的面板,我想在单击按钮时更改复选框的所有选中状态。

foreach (object x in panel1.Controls)
        {
            if (x.GetType() == typeof(CheckBox))
            {
                x.Checked = false; // problem is here;
                // (CheckBox)x.Checked = false; // also didn't work
            }
        }

我确定这很简单,但找不到解决问题的方法。我能够在 vb.net 中编写相同的程序,但不想使用它

【问题讨论】:

    标签: c# object properties foreach controls


    【解决方案1】:
    foreach(Checkbox box in panel1.Controls.OfType<CheckBox>())
    {
      box.Checked = true;
    }
    

    【讨论】:

      【解决方案2】:

      您绝对可以稍微清理一下您的代码(以及用括号解决问题):

      foreach(var x in panel1.Controls)
      {
          var checkbox = x as Checkbox;
          if(checkbox != null) checkbox.Checked = false;
      }
      

      【讨论】:

        【解决方案3】:

        试试

        ((CheckBox)x).Checked = false;
        

        如你所写,编译器理解

        (CheckBox)(x.Checked) = false;
        

        【讨论】:

          【解决方案4】:

          x 仍然是一个对象,因此您需要将对象强制转换为复选框

          ((Checkbox)x).Checked = false;
          

          【讨论】:

            【解决方案5】:

            您需要在整个转换操作周围加上括号:

            ((CheckBox)x).Checked = false;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-09-18
              • 2013-03-21
              • 2023-03-18
              • 2010-10-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-04-28
              相关资源
              最近更新 更多