Comme Philip Rieck l'a dit, la propriété margin n'est respectée que par les contrôles de conteneur qui effectuent la mise en page. Voici un exemple qui montre assez clairement comment la propriété TableLayoutPanel
respecte la propriété Margin :
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);
}
}
}
Je crois que les seuls contrôles intégrés à .NET 2.0 qui respectent cette propriété sont les suivants FlowLayoutPanel
y TableLayoutPanel
Il est à espérer que les composants tiers le respectent également. Cela n'a pratiquement aucun effet dans d'autres scénarios.