删除控制组中的所有图像

时间:2016-11-04 19:27:48

标签: c# button foreach controls

申请此代码时,我没有获得选项.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;
    } 
}

我试图从控制组中的按钮中删除所有图像。有什么想法吗?

3 个答案:

答案 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。