有人能帮助我理解Margin属性的用处吗?使用下面的简单场景,我看不出它有什么用处
设置
我创建了一个简单的应用程序来测试这一点:
1.从模板创建新的WinForms应用程序
1.已在设计器中打开Form 1
1.从工具箱向Form 1添加了一个“Panel”(称为Panel 1),其中:
Dock =灌装;大小。宽度= 800 px;大小。高度= 450 px ';
1.在Panel 1上添加了两个子“面板”
面板2具有Dock =左侧
面板3具有Dock =右侧
Panel 2和Panel 3的大小.宽度为400 px,大小.高度为450 px(因此Panel 2和Panel 3有效地将Panel 1从中间分割为2)
为什么填充属性对我有意义:
“填充”的用处在设计器中是显而易见的-它在父级(Panel 1)的边框与其内容(Panel 2和Panel 3)之间强制留出空间。
因此,如果我设置Panel1.Padding.All = 10,那么Panel 2和Panel 3的大小和高度都将被强制减少(减少20 px)到430 px,它们的大小和宽度保持不变(它们只是变得重叠)。
然后Winforms阻止Panel 2/Panel 3的大小和高度增加到430 px以上,因为这会侵占Panel 1的填充空间。
这一切对我来说都有意义
为什么MARGIN属性对我没有意义
边距是元素边框周围的空间-它可以防止其他元素过于靠近您正在设置边距的元素。
所以我想,如果我将(Panel 2上的)Margin.Right设置为10 px,这将迫使Panel 3的Size.Width减小(这样它就不会侵占Panel 2的边距)。
相反,设置右边距似乎对表单没有明显的影响?
2条答案
按热度按时间6ie5vjzr1#
Margin
属性主要由可视化设计器使用,并在设计图面上定位控件时通过“对线”反映。请参阅Microsoft提供的walkthrough。
v1l68za42#
一种思考方式(通常)是
Margin
是发生在控件 * 外部 * 的事情,而Padding
是发生在控件 * 内部 * 的事情。此外,“总体”效果可能是父控件的填充添加到子控件的边距的结果。MainForm
的填充为25(显示为蓝色),并包含设置为Dock.Fill
的FlowLayoutPanel
。* 为避免混淆,流布局面板的填充和边距设置为0。*BackColor
或LightSalmon
会显示出来。从一个子控件的底部到下面下一个子控件的顶部总共有50个边距。* 每个子控件还设置其填充值设置为15,这将应用于它所包含的按钮的所有四个侧面。Button
的padding和margin也设置为0。按钮自动调整大小并居中,因为它在所有边都固定。