2016-11-18 1 views
-2

양식의 임의의 위치에 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

버튼을 다른 사람의 위에 놓지 않으려면 추가하려는 버튼 아래에 버튼이 있는지 확인해야합니다. 이를 위해 새로운 버튼을 추가하기 전에 버튼 목록을 만들고 위치와 크기를 확인합니다. – Pikoh

+1

"일부 단추가 서로 떨어집니다."- 겹침을 감지 할 수 없음을 알기 때문에 예상 할 수 있습니다. 이를 수행하는 방법에 대해 생각하고 아이디어를 구현해야합니다. 이것은 사람들이 당신을 위해 이상한 아이디어를 구현할 사이트가 아닙니다. https://stackoverflow.com/help/how-to-ask –

+0

을 참조하면 plz 내 코드를 수정할 수 있습니까 ?? –

답변

0

물론 그들은 서로 쌓일 것입니다.

Rand.Next()에서 새로운 임의의 위치를 ​​가져올 때 이전에 만든 버튼의 위치를 ​​합성해야합니다. 이를 수행하는 좋은 방법은 Array에 이러한 위치를 저장하거나 숫자를 미리 생성 한 다음 종료하는 것입니다.

각각에 대해 배열의 위치 : - 크기가 X이고 위치가 x, y (버튼의 왼쪽 상단) 인 버튼은 해당 배열의 다른 버튼과 겹치지 않습니다. - x, y 위치에있는 크기가 X 인 Y 버튼은 기본 창 밖으로 확장되지 않습니다.

나중에 일부 코드를 만들 수도 있지만 약속 할 수는 없습니다. 자, 좀 해봐.

+0

내 친구에게 감사드립니다. –