我正在尝试禁用Groupbox
中的所有控件,如下所示,但是我在收到任何建议时收到错误?
无法将类型为system.windows.forms.checkbox的对象强制转换为类型 system.windows.forms.textbox
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;
}
}
答案 0 :(得分:6)
为什么不禁用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
。好吧,它只能在另一个上,所以演员总是在某个时候失败。
如果语句分开,您就会知道if
过滤的类型。
答案 1 :(得分:0)
GB_Product_Entry.Enabled = false; 它将禁用GB_Product_Entry GrpupBox中的所有内容