动态图片框创建为刚刚显示的MdiChildForm

本文关键字:显示 MdiChildForm 创建 动态 | 更新日期: 2023-09-27 18:26:27

希望你们中的一些人能帮助我。我有一个PictureBox数组要在显示后显示到MdiChildForm中。但当我运行程序时,在"CreatePictureBox"方法中,我只有在显示表单后才执行该方法,我得到了一个NullReferenceException。为什么?

这是FormShowing 的代码

    private void packOpeningToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ProvaPackOpening ProvaPackOpening = new ProvaPackOpening();
        ProvaPackOpening.MdiParent = this;
        ProvaPackOpening.Show();
        ProvaPackOpening.CreatePictureBox();
    }

这就是阵列创建的代码

    public void CreatePictureBox()
    {
        Int16 i = 0;
        PictureBox[] PicBoxArray = new PictureBox[10];
        while (i < PicBoxArray.Count())
        {
            PicBoxArray[i].BackgroundImageLayout = ImageLayout.Center;
            PicBoxArray[i].Location = new Point(0, 0);
            PicBoxArray[i].Size = new Size(128, 185);
            PicBoxArray[i].BackColor = Color.Aqua;
            PicBoxArray[i].Parent = this.panBox;
            PicBoxArray[i].Visible = true;
            panBox.Controls.Add(PicBoxArray[i]);
            PicBoxArray[i].Show();
            i++;
        }
    }

我曾考虑过用线程管理整个程序(这将是一个游戏),但如果有一些更简单的解决方案,那会更好。

动态图片框创建为刚刚显示的MdiChildForm

创建对象数组时,只为对象列表分配空间。您并不是在自己创建单个对象。将这一行添加为while循环中的第一行:

PicBoxArray[i] = new PictureBox();