gpt4 book ai didi

c# - 为什么我不能在数组中创建更多 PictureBox?

转载 作者:行者123 更新时间:2023-11-30 17:38:39 28 4
gpt4 key购买 nike

首先,我要感谢您抽出宝贵时间 :) 所以这是我的问题.. 我正在尝试制作一个小游戏,在其中生成 PictureBox 并将其从右向左发送,然后我的 PictureBox 播放器会尽量避免它们跳跃。所以我做的第一件事是,我用一个类创建了我的 PictureBox 生成器。但问题是,我只能生成 block [0] .. 当我尝试创建 block [1] 时,没有任何反应!请帮助我..这是我的代码:

Form1.cs

namespace Game_0._1
{
public partial class Form1 : Form
{
Block[] block = new Block[50];

public Form1()
{
InitializeComponent();
int _Length = block.Length;

for(int i=0; i < 50; i++)
{
block[i] = new Block();
this.Controls.Add(block[i]._ScreenPanel());
block[i].Screen.Controls.Add(block[i].Box);
label1.Text = ("Generating block [" + i + "]");

}

}

private void button1_Click(object sender, EventArgs e)
{
block[0].SpawnBlock();
}
}
}

Block.cs

namespace Game_0._1
{
class Block
{
public Panel Screen;
public PictureBox Box;
Point x = new Point(50, 50);
Size s = new Size(150, 50);
Color c = Color.FromName("black");

public Block()
{
Screen = new Panel();
Screen.Dock = DockStyle.Fill;
Box = new PictureBox();

}
public Panel _ScreenPanel()
{
return Screen;
}
public PictureBox SpawnBlock()
{
Box.Name = "Obstacle";
Box.Location = x;
Box.Size = s;
Box.BorderStyle = BorderStyle.FixedSingle;
Box.BackColor = c;
return Box;
}
public void ChangeXLoc()
{
this.x.X += 50;
}


}
}

这里:

private void button1_Click(object sender, EventArgs e)
{
block[0].SpawnBlock();
}

这成功生成了一个黑框,但是如果我输入 block[1],什么也没有...

最佳答案

问题是您的 Panel(屏幕)与 box[1] 所在的 Panel 重叠,因此它不可见,除非放在前面- 这又会使另一个盒子不可见。

解决这个问题的方法是使用一个面板,并相应地调整它的大小,这样您就可以将每个盒子放在同一个面板上,并使它们的位置相对于面板的 0,0

另一种解决方案是为每个盒子设置一个与盒子大小相同的面板,然后移动面板而不是盒子,这将产生相同的效果,但可能需要更少的代码进行编辑。

关于c# - 为什么我不能在数组中创建更多 PictureBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403543/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com