如何从List <control>?</control>访问更多派生控件类的属性

时间:2011-12-17 11:04:29

标签: c# .net list controls picturebox

我发现我无法将Image属性用于PictureBox中的List<Control>控件。

我想做这样的事情:

    List<Control> pictureboxes = new List<Control>();

    private void button1_Click(object sender, EventArgs e)
    {
        foreach (var picturebox in pictureboxes)
        {
             picturebox.Image = WindowsFormsApplication1.Properties.Resources.image;
        }
    }

我能以某种方式这样做吗?

1 个答案:

答案 0 :(得分:1)

Image控件放在PictureBox容器中时,无法访问List<Control>控件的Control属性的原因是列表的基本类型({{1 }})没有Image属性。

但该财产并没有消失。您只需将对象从Control转换为更加派生的类PictureBox。然后你可以调用任何方法或访问你想要的任何属性。例如:

List<Control> MyList = new List<Control>();

private void button1_Click(object sender, EventArgs e)
{
    foreach (Control ctrl in MyList)
    {
        // Try to cast the Control object to a PictureBox
        PictureBox picBox = ctrl as PictureBox;
        if (picBox != null)
        {
            picBox.Image = WindowsFormsApplication1.Properties.Resources.image;
        }
    }
}