Я пришел с тем же сомнением, с текущим вкладом в вопрос, который я мог придумать:
int altura = this.Size.Height;
int largura = this.Size.Width;
int alturaOffset = 10;
int larguraOffset = 10;
int larguraBotao = 100; //button widht
int alturaBotao = 40; //button height
for (int i = 0; i < 50; ++i)
{
if ((larguraOffset+larguraBotao) >= largura)
{
larguraOffset = 10;
alturaOffset = alturaOffset + alturaBotao;
var button = new Button();
button.Size = new Size(larguraBotao, alturaBotao);
button.Name = "" + i + "";
button.Text = "" + i + "";
//button.Click += button_Click;//function
button.Location = new Point(larguraOffset, alturaOffset);
Controls.Add(button);
larguraOffset = larguraOffset + (larguraBotao);
}
else
{
var button = new Button();
button.Size = new Size(larguraBotao, alturaBotao);
button.Name = "" + i + "";
button.Text = "" + i + "";
//button.Click += button_Click;//function
button.Location = new Point(larguraOffset, alturaOffset);
Controls.Add(button);
larguraOffset = larguraOffset+(larguraBotao);
}
}
Ожидаемое поведение таково, что это будет генерировать кнопки, используя текущее состояние вашего размера окна, Всегда ломать линию, когда следующая кнопка будет превышать правый край вашего окна.