我想在表单的随机位置创建20个按钮。我的代码写在下面,但它没有按照我的预期工作,一些按钮互相落在一起,其中一些按钮不合适。
int x,y;
for (int i = 1; i <= 20; i++)
{
Random rnd = new Random(Math.Abs(Guid.NewGuid().GetHashCode()));
x = rnd.Next(this.Width-50);
y = rnd.Next(this.Height-50);
Button btn = new Button();
btn.Location = new Point(x, y);
this.Controls.Add(btn);
}
任何人都可以帮我找到此代码中的问题吗?
答案 0 :(得分:0)
当然,它们会叠在一起。
从Rand.Next()获取新的随机位置时,您必须考虑先前创建的按钮的位置。这样做的一个好方法是将这些位置保存到数组中或预先生成数字并停止这样做,如果你的20个位置符合一系列条件,最终可以得出结论:
对于Array中的每个位置: - 位置x,y(按钮的左上角)的大小为X,Y的按钮不会与所述阵列中的任何其他按钮重叠。 - 尺寸为X的按钮,位于x,y的Y不会延伸到主窗口之外。
我可能稍后会创建一些代码,但我无法承诺。现在,给它一些思想。