我假设C#边距属性的含义类似于CSS --控件外部的间距。但是保证金值似乎被忽略了,不管我输入了什么值。
然后我在SDK上读到:
设置停靠控件上的边距属性对控件与其容器边缘的距离没有影响。
考虑到我正在对表单设置控件,并可能将其停靠,那么保证金属性会给我带来什么呢?
发布于 2008-09-16 19:10:11
按照布局引擎认为合适的任何方式,您的控制主机(例如Panel)使用的任何布局引擎都会使用边距属性。然而,它是最好使用的间隔,正如您所假设的。只需阅读该特定布局引擎的文档即可。
例如,在使用FlowLayoutPanel或TableLayoutPanel时,可以非常方便地减少默认的填充量,或者稍微减少一些空间。显然,如果您编写自定义布局提供程序,您可以使用边距,无论您认为合适。
发布于 2008-09-16 19:17:45
就像Philip所说的,只有执行布局的容器控件才会尊重保证金属性。下面的一个示例非常清楚地说明了TableLayoutPanel是如何尊重保证金属性的:
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
TableLayoutPanel pnl = new TableLayoutPanel();
pnl.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
pnl.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50));
pnl.Dock = DockStyle.Fill;
this.Controls.Add(pnl);
Button btn1 = new Button();
btn1.Text = "No margin";
btn1.Dock = DockStyle.Fill;
Button btn2 = new Button();
btn2.Margin = new Padding(25);
btn2.Text = "Margin";
btn2.Dock = DockStyle.Fill;
pnl.Controls.Add(btn1, 0, 0);
pnl.Controls.Add(btn2, 1, 0);
}
}
}我相信唯一尊重这个属性的.NET 2.0内置控件是FlowLayoutPanel和TableLayoutPanel;希望第三方组件也尊重它。在其他情况下,它基本上没有任何影响。
发布于 2017-11-30 08:42:24
如果您不使用布局容器,而是手动放置控件,则Control.Margin属性在设计时也可能很有用。
它影响手动拖动控件( snaplines appear )之间的距离。
例如,对于文本框的默认页边距值为3,您可以使用以下处理方式:

而对于10

因此,如果您对UI有一些严格的指导原则,那么您只需根据需要设置页边距,并将控件拖到对线上。
https://stackoverflow.com/questions/75777
复制相似问题