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

C# Winforms,在使用Dock属性时创建填充,c#,winforms,padding,C#,Winforms,Padding,使用dockstyle.top属性时,如何在文本框之间添加填充或一些空格 for(int i =0; i< 10; i++) { textboxes[i] = new TextBox(); textboxes[i].Dock = DockStyle.Top; mypanel.Controls.Add(textboxes[i]); } for(int i=0;i

使用dockstyle.top属性时,如何在文本框之间添加填充或一些空格

for(int i =0; i< 10; i++) {
    textboxes[i] = new TextBox();
    textboxes[i].Dock = DockStyle.Top;
    mypanel.Controls.Add(textboxes[i]); 
}
for(int i=0;i<10;i++){
textboxs[i]=新的TextBox();
textboxs[i].Dock=DockStyle.Top;
mypanel.Controls.Add(文本框[i]);
}
上面的代码将文本框放在彼此的正下方。如果不使用质量面板或固定定位,则无法解决此问题。如何做到以下几点

1) 我想在框之间添加大约10-20像素


2) 如何更改文本框的大小(高度、宽度),因为当使用dockstyle.top时,它会忽略大小命令?

我知道您来自哪里,从WPF返回WinForms后,这尤其令人沮丧

我建议使用一个文本框,每个文本框都有自己的单元格,并调整单元格的属性。这将解决您的填充和大小问题


另一种选择是使用一些更复杂的布局控件,如DockStype.Top中的那些(非免费)。

,因为文本框是固定的,所以不能更改文本框的宽度。您只能更改高度。但要更改文本框的高度,必须事先设置
Multiline=true

要获得不同框之间的空间,必须将每个文本框放在一个面板中,请设置
TextBox.Dock=Fill
panel.Dock=Top
panel.Padding=10
。现在,每个文本框之间都有了一些空间

示例代码
for(int i=0;i<10;i++)
{
var panelTextBox=CreateBorderedTextBox();
this.Controls.Add(panelTextBox);
}
专用面板CreateBorderedTextBox()
{
var panel=CreatePanel();
var textBox=CreateTextBox();
panel.Controls.Add(文本框);
返回面板;
}
专用面板CreatePanel()
{
变量面板=新面板();
panel.Dock=DockStyle.Top;
面板填充=新填充(5);
返回面板;
}
私有文本框CreateTextBox()
{
var textBox=新的textBox();
textBox.Multiline=true;
textBox.Dock=DockStyle.Fill;
返回文本框;
}

我忘了什么,你也可以试试看。只需从面板中删除
DockStyle.Top
,并将其放入FlowLayoutPanel。此外,还应将设置为自上而下。也许这也可以帮助您解决问题。

另一个适合较小布局的解决方法是,只需添加一个
标签
控件,之后该控件也停靠在
顶部,该控件不会自动调整大小,
Text=”“
高度=您的填充
。这对于使用设计器时的奇数填充非常有用。

以后将尝试tablelayoutpanel。感谢tipI,我担心我会被迫这么做。谢谢LowlayOutpanel真的很棒。我希望有两个标签并排,通过推动前面的控件,它们从左到右增长,保持两个标签对齐,并对FLP进行jsut处理。
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;
}