C# Winforms,在使用Dock属性时创建填充
使用dockstyle.top属性时,如何在文本框之间添加填充或一些空格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
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;
}