我正在尝试禁用 Groupbox 中的所有控件,如下所示,但在转换任何建议时出现错误?


            foreach (Control cont in GB_Product_Entry.Controls)
            {
                if (cont is TextBox || cont is ComboBox)
                {
                    ((TextBox)cont).ReadOnly = true;
                    ((TextBox)cont).BackColor = SystemColors.Control;

                    ((ComboBox)cont).Enabled = false;
                    ((ComboBox)cont).BackColor = SystemColors.Control;

                    ((CheckBox)cont).Enabled = false;
                    //((CheckBox)cont).BackColor = SystemColors.Control;
                }
            }

最佳答案

为什么不禁用 GroupBox 本身呢?

GB_Product_Entry.Enabled = false;

如果您真的必须遍历它们,则将 if 条件分开:
foreach (Control cont in GB_Product_Entry.Controls)
{
    if (cont is TextBox)
    {
        ((TextBox)cont).ReadOnly = true;
        ((TextBox)cont).BackColor = SystemColors.Control;
    }
    else if (cont is ComboBox)
    {
        ((ComboBox)cont).Enabled = false;
        ((ComboBox)cont).BackColor = SystemColors.Control;
    }
    else if (cont is CheckBox)
    {
        ((CheckBox)cont).Enabled = false;
      //((CheckBox)cont).BackColor = SystemColors.Control;
    }
    // Any other conditions here...
}

这个问题目前是因为在 if 语句中你将 cont 转换为 TextBox ,然后他们稍后将它转换为 ComboBox 。好吧,它只能是 on 或 other,所以 Actor 总是在某些时候失败。

将语句分开后,您就知道类型,因为它是由 if 过滤的。

关于c# - 禁用 Groupbox 中的所有控件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42621936/

10-12 12:20
查看更多