Winforms,使用 Dock 属性时创建填充
使用dockstyle.top属性时如何在文本框之间添加填充或一些空格?
for(int i =0; i< 10; i++) {
textboxes[i] = new TextBox();
textboxes[i].Dock = DockStyle.Top;
mypanel.Controls.Add(textboxes[i]);
}
上面的代码将文本框放在彼此的正下方。如果不使用质量面板或固定定位,就无法解决这个问题。下面的事情该怎么办呢?
1)我想在框之间添加大约10-20像素。
2)如何更改文本框的大小(高度,宽度),因为使用dockstyle.top时它会忽略大小命令?
How do I add padding, or some space between the textboxes when using dockstyle.top property?
for(int i =0; i< 10; i++) {
textboxes[i] = new TextBox();
textboxes[i].Dock = DockStyle.Top;
mypanel.Controls.Add(textboxes[i]);
}
The code above puts textboxes right beneath each other. Can't figure this out without using mass panels or fixed positioning. How to do the following?
1) I would like to add around 10-20pixels between boxes.
2) How to change size (height,width) of the textboxes, since when using dockstyle.top it ignores the size commands ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 DockStype.Top 您无法更改 TextBox 的宽度,因为它们已停靠。您只能更改高度。但要更改 TextBox 的高度,您必须事先设置
Multiline = true
。要获得不同框之间的空间,您必须将每个 TextBox 放入面板中,设置
TextBox.Dock = Fill
、Panel.Dock = Top
和>Panel.Padding = 10
。现在每个文本框之间都有一些空间。示例代码
我忘了什么,您也可以尝试 FlowLayoutPanel 。只需从面板中删除
DockStyle.Top
并将它们放入 FlowLayoutPanel 中即可。此外,您还应该将 FlowDirection 设置为自顶向下。也许这也可以帮助您解决您的问题。With DockStype.Top you can't change the width of your TextBoxes, cause they are docked. You can only change the height. But to change the height of a TextBox you have to set the
Multiline = true
beforehand.To get the space between the different boxes you have to put each TextBox within a panel, set the
TextBox.Dock = Fill
, thePanel.Dock = Top
and thePanel.Padding = 10
. Now you have some space between each TextBox.Sample Code
What i forgot, you can also give a try to the FlowLayoutPanel. Just remove the
DockStyle.Top
from the panels and put them into the FlowLayoutPanel. Also you should set the FlowDirection to TopDown. Maybe this can also help you to solve your problem, too.适合较小布局的另一种解决方法是仅添加一个
Label
控件,该控件随后也停靠在Top
上,该控件不是 AutoSized,Text=" "
,高度=您的内边距
。这对于使用设计器时的奇怪填充非常有用。Another work around that suits smaller layouts is to just add a
Label
control afterwards also docked to theTop
, which is not AutoSized,Text=" "
,Height=your padding
. This is quite useful for the odd bit of padding when using the designer.我知道你从哪里来,从 WPF 返回到 WinForms 后这尤其令人沮丧。
我建议使用 TableLayoutPanel,其中每个文本框都会获得自己的单元格,并调整单元格的属性。这应该可以解决您的填充和尺寸问题。
另一种选择是使用一些更复杂的布局控件,例如 DevExpress< /a> 的(不是免费的)。
I know where you're coming from, this is especially frustrating after returning to WinForms from WPF.
I would suggest using a TableLayoutPanel, in which each TextBox would get its own cell, and adjusting the properties of the cells. This should solve both your padding and size problems.
Another alternative would be to use some more complex layout controls, such as the DevExpress ones (not free).