С DockStype.Top вы не можете изменять ширину ваших текстовых полей, потому что они пристыкованы. Вы можете только изменить высоту. Но чтобы изменить высоту текстового поля, вы должны заранее установить Multiline = true
.
Чтобы получить пространство между различными полями, вы должны поместить каждый TextBox на панель, установите TextBox.Dock = Fill
, Panel.Dock = Top
и Panel.Padding = 10
. Теперь у вас есть пространство между каждым TextBox.
Пример кода
for (int i = 0; i < 10; i++)
{
var panelTextBox = CreateBorderedTextBox();
this.Controls.Add(panelTextBox);
}
private Panel CreateBorderedTextBox()
{
var panel = CreatePanel();
var textBox = CreateTextBox();
panel.Controls.Add(textBox);
return panel;
}
private Panel CreatePanel()
{
var panel = new Panel();
panel.Dock = DockStyle.Top;
panel.Padding = new Padding(5);
return panel;
}
private TextBox CreateTextBox()
{
var textBox = new TextBox();
textBox.Multiline = true;
textBox.Dock = DockStyle.Fill;
return textBox;
}
Что я забыл, вы также можете попробовать FlowLayoutPanel . Просто удалите DockStyle.Top
с панелей и поместите их в FlowLayoutPanel. Также вы должны установить FlowDirection на TopDown. Возможно, это также поможет вам решить вашу проблему.