Mil*_*lan 15 c# padding winforms
使用dockstyle.top属性时,如何在文本框之间添加填充或空格?
for(int i =0; i< 10; i++) {
textboxes[i] = new TextBox();
textboxes[i].Dock = DockStyle.Top;
mypanel.Controls.Add(textboxes[i]);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将文本框放在彼此的正下方.如果不使用质量面板或固定定位,无法解决这个问题.怎么做以下?
1)我想在盒子之间添加大约10-20像素.
2)如何更改文本框的大小(高度,宽度),因为使用dockstyle.top时它会忽略大小命令?
Oli*_*ver 19
使用DockStype.Top,您无法更改TextBox的宽度,因为它们已停靠.你只能改变高度.但要更改TextBox的高度,您必须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;
}
Run Code Online (Sandbox Code Playgroud)
我忘记了,你也可以试试FlowLayoutPanel.只需DockStyle.Top
从面板中删除它们并将它们放入FlowLayoutPanel即可.您还应将FlowDirection设置为TopDown.也许这也可以帮助您解决问题.
另一种适合较小布局的解决方法是仅添加一个Label
随后也停靠在 上的控件Top
,该控件不是 AutoSized, Text=" "
, Height=your padding
。这对于使用设计器时的奇怪填充非常有用。