Como dijo Philip Rieck, la propiedad de margen solo es respetada por los controles de contenedor que realizan el diseño. Aquí hay un ejemplo que hace que sea bastante claro cómo el TableLayoutPanel
respeta la propiedad Margen:
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);
}
}
}
Creo que la única .NET 2.0 controles integrados que respeten esta propiedad son FlowLayoutPanel
y TableLayoutPanel
; es de esperar que los componentes de terceros lo respeten también. Básicamente no tiene ningún efecto en otros escenarios.