申请此代码时,我没有获得选项.Image
:
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
b.Image = null;
}
}
但是,我可以选择' Visible':
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
b.Visible = false;
}
}
我试图从控制组中的按钮中删除所有图像。有什么想法吗?
答案 0 :(得分:2)
is
仅检查类型是否为Button。
您希望使用as
执行实际演员,从而允许您访问Button的属性。如果演员表无效,您只需获得null
引用,只需执行as
演员表,然后在使用之前检查您的变量是否为空。
foreach(Control b in _SelectionPanel.Controls)
{
Button castB = b as Button;
if (castB != null)
{
castB.Image = null;
}
}
答案 1 :(得分:1)
在循环的上下文中,b
是一个控件。即使经过检查。要获取Image属性,需要将其强制转换为Button类型:
foreach(Control b in _SelectionPanel.Controls)
{
if (b is Button)
{
((Button)b).Image = null;
//Alternatively
(b as Button).Image = null;
}
}
答案 2 :(得分:1)
foreach(var b in _SelectionPanel.Controls.OfType<Button>())
{
((Button)b).Image = null;
}
您只能迭代类型按钮的控件,然后显式地将var转换为Button。