Winforms,在使用Dock属性时创建填充

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 = TopPanel.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.也许这也可以帮助您解决问题.


noe*_*cus 5

另一种适合较小布局的解决方法是仅添加一个Label随后也停靠在 上的控件Top,该控件不是 AutoSized, Text=" ", Height=your padding。这对于使用设计器时的奇怪填充非常有用。