我正在尝试禁用 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/