我正在尝试将图片框动态添加到 C# win32 表单中,以用于我正在尝试构建的接近生产质量的应用程序,而且我已经把它搞定了。
我遇到的问题是我似乎无法在一种方法中动态地将图片框或控件添加到表单中。我已经通过 Form1 初始化方法将它们添加到表单中,但是如果我在 button_click 方法中添加控件,它根本不会添加它们,除非我有一个面板容器,然后键入 panel1.Controls.Add(stuff) . 但是,然后图片框出现在与预期完全不同的位置 - 并且显然被面板本身挡住了。大部分图片框都被面板挡住了,还有一部分在面板之外。我不知道是怎么回事。
这是我在网上学到的用于添加图片框的代码,采用按钮单击方法:
PictureBox pb = new PictureBox();
pb.Size = new Size(this.Size.Width / 14, this.Size.Width / 12); //I use this picturebox simply to debug and see if I can create a single picturebox, and that way I can tell if something goes wrong with my array of pictureboxes. Thus far however, neither are working.
pb.BackgroundImage = Properties.Resources.cardback;
pb.BackgroundImageLayout = ImageLayout.Stretch;
pb.Location = new Point(50, 50);
pb.Anchor = AnchorStyles.Left;
pb.Visible = true;
InitializeComponent();
this.Controls.Add(pb);
PictureBox[] pbName = new PictureBox[totaldeckcount];
for (int i = 0; i < totaldeckcount; i++)
{
pbName[i] = new PictureBox();
pbName[i].Size = new Size(this.Size.Width / 14, this.Size.Width / 12);
pbName[i].BackgroundImage = Properties.Resources.cardback;
pbName[i].BackgroundImageLayout = ImageLayout.Stretch;
pbName[i].Image = Properties.Resources.cardback;
pbName[i].Anchor = AnchorStyles.Left;
pbName[i].Visible = true;
int x = 0;
int y = 15;
if (i > 10)
{
y += (int)((this.Size.Height * i) + 30);
}
x = (int)((this.Size.Width / 12) * Math.IEEERemainder(i, 10));
pbName[i].Location = new Point(x, y);
this.Controls.Add(pbName[i]);
}
Cardback 是一种工作纹理,当我尝试在 Form1 的方法中使用它制作图片框时,我已经看到这个东西弹出,所以这不是问题。问题似乎不是我的语法,因为我能够复制
PictureBox pb = new PictureBox();
代码直接进入 Form1 方法,它执行得很好。
我无法通过谷歌在线找到任何东西,这让我完全难过。