在表格C#.NET的随机位置创建按钮

在表格C#.NET的随机位置创建按钮,c#,C#,我想在表单的随机位置创建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); But

我想在表单的随机位置创建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);
}
intx,y;

对于(int i=1;i,它们当然会相互堆叠

从Rand.Next()中获取新的随机位置时,必须考虑以前创建的按钮的位置。这样做的一个好方法是将这些位置保存到数组中或事先生成数字,如果您得到的20个位置与一组最终允许您得出以下结论的条件相匹配,则停止这样做:

对于阵列中的每个位置: -位于X,Y位置(按钮左上角)的尺寸为X,Y的按钮不会与所述阵列中的任何其他按钮重叠。 -位于X,Y位置的尺寸为X,Y的按钮将不会伸出主窗口


我以后可能会创建一些代码,但我不能保证。现在,请考虑一下。

如果您不希望按钮位于其他按钮之上,则必须检查要添加的按钮下方是否有按钮。为此,我将创建一个按钮列表,并在添加新按钮之前检查位置和大小。“有些钮扣相互扣在一起"-我看不出有人试图检测重叠,所以这只是意料之中的事。你应该考虑如何做到这一点,然后实施你的想法。这不是一个人们会为你实施任何奇怪想法的网站。请看你能不能更正我的代码??试着实施其中一个可能作为答案或评论发布的想法。没有人会被发现在这里为任何人填写代码:)@Salar_n1
你能帮我更正代码吗
SO不是代码编写服务。现有代码没有问题,您缺少功能,并且您已经意识到了这一点。