【发布时间】:2021-06-06 16:31:01
【问题描述】:
C# 只在一个大面板中创建面板 我有这个代码(盒子大小是随机生成的):
//Set Location of panel
int xbox = r.Next(10, 766);
int ybox = r.Next(10, 390);
if(ybox + box.Height >= boxPanel.Location.Y + boxPanel.Height)
{
ybox = ybox - 100;
}
else if(xbox + box.Width >= boxPanel.Location.X + boxPanel.Width)
{
xbox = xbox - 100;
}
else if(xbox - box.Width <= boxPanel.Location.X - boxPanel.Width)
{
xbox = xbox + 100;
}
else if (ybox - box.Height <= boxPanel.Location.Y - boxPanel.Height)
{
ybox = ybox + 100;
}
box.Location = new Point(xbox, ybox);
我最终想要的是一个盒子或多个盒子,它们在面板中而不在外面。我想在生成面板时看到它。我还想保留一个“不可见”的边框,这样它就不会在边缘产生。
【问题讨论】:
-
您的问题到底是什么?无论如何,您可能需要考虑使用
FlowLayoutPanel。 -
您可能正在尝试将您的
box面板添加到父boxPanel。所以,你错过了boxPanel.Controls.Add(box)。定义子面板的位置时,根本不考虑容器的位置。 -- 如果您只想要随机大小并且子控件的位置不相关,请使用前面提到的 FlowLayoutPanel。否则,只需随机定义它们的位置/大小并将它们添加到容器中。BringToFront()可用于在顶部显示添加的最后一个子控件。