C# - 将多个图像对象设置到表单上

时间:2015-12-18 18:45:59

标签: c#

我是c#的初学者,我想知道这里导致错误的是什么。我正在尝试在对象中设置宽度,高度,停靠点或图像。

private void Home_Load(object sender, EventArgs e)
{
    string[] fileNo = File.ReadAllLines(@"..\..\images\Products\productListing.txt");
    PictureBox[] imageControl = new PictureBox[fileNo.Length];
    for (int i = 0; i < fileNo.Length; i++)
    {
        imageControl[i].Width = 400;
        imageControl[i].Height = 400;

        Bitmap image = new Bitmap(@"..\..\images\Products\" + i + ".jpg");

        imageControl[i].Dock = DockStyle.Fill;
        imageControl[i].Image = (Image)image;

        Console.WriteLine(i);
    }
}

我在

上遇到nullreferenceexception是未处理的错误
imageControl[i].Width = 400;

imageControl[i].Height = 400;

imageControl[i].Dock = DockStyle.Fill;

imageControl[i].Image = (Image)image;

2 个答案:

答案 0 :(得分:3)

您没有实例化任何PictureBoxes。试试这个:

for (int i = 0; i < fileNo.Length; i++)
{
    imageControl[i] = new PictureBox();
    ...
}

答案 1 :(得分:0)

首先创建PictureBox类对象,然后分配这些属性。您只是想访问图片框,但您还没有启动该对象。

private void Home_Load(object sender, EventArgs e)
{
    string[] fileNo = File.ReadAllLines(@"..\..\images\Products\productListing.txt");
    PictureBox[] imageControl = new PictureBox[fileNo.Length];
    for (int i = 0; i < fileNo.Length; i++)
    {
        imageControl[i] = new PictureBox(); // initiate object first
        imageControl[i].Width = 400;  // you are accessing a null object here.
        imageControl[i].Height = 400;

        Bitmap image = new Bitmap(@"..\..\images\Products\" + i + ".jpg");

        imageControl[i].Dock = DockStyle.Fill;
        imageControl[i].Image = (Image)image;

        Console.WriteLine(i);
    }
}

如果要将这些Picture控件添加到表单,请使用Form.Controls proertry添加它们。 例如 this.Controls.Add(imagecontrol [i]。但是记住你将这些控制Dock属性设置为Fill然后你只能一次看到图像。所以设置它们的大小和位置属性来显示它们。

希望这能帮到你..