Please note that this is not my work, and comes from this tutorial
public class RoundedPanel : Panel { public int Radius { get; set; } public Color BorderColor { get; set; } public Color FillColor { get; set; } public bool Fill { get; set; } public bool AntiAlias { get; set; } public RoundedPanel() : base() { BackColor = Color.White; FillColor = Color.Transparent; Fill = false; AntiAlias = true; DoubleBuffered = true; Radius = 18; } protected override void OnPaint(PaintEventArgs e) { GraphicsPath path = RoundedRectangle.Create(0, 0, Width - 1, Height - 1, Radius); e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; e.Graphics.DrawPath(new Pen(BorderColor, 1f), path); if (Fill) { e.Graphics.FillPath(new SolidBrush(FillColor), path); } } }