WinForms のコントロールの枠

.NET のコントロールは、「BorderStyle」プロパティで枠のスタイルを変更できるのだが、「None / FixedSingle / Fixed3D」の3パターンからしか選択することができなくて表現力が乏しい。

そこで、Paint イベントを捕まえてやって、その中で

private void panel_Paint(object sender, PaintEventArgs e)
{
	Graphics g = e.Graphics;
	ControlPaint.DrawBorder3D(g, 0, 0,
		panel.Width, panel.Height, Border3DStyle.Etched);
}

などとすると、お好みのスタイルのボーダーを描画できる。(出展:twintailのソース)