DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TabaleLayoutPanelの枠線の色

環境/言語:[OS : Windows XP / 言語 : C# / .NET Framework : 3.0]
分類:[.NET]

【解決したい問題】

TableLayoutPanelの枠線の色を変更したい場合、TableLayoutPanelを継承したカスタムコントロールを作成し、
OnPaintBackgroundをオーバーライドするという事は分かったのですが、実際にどう実装すれば良いか分かりません。

protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaintBackground(e);

// ここに何を記述するか
//
//
}

ご教授宜しくお願いします。
■No26844に返信(taroさんの記事)
> OnPaintBackgroundをオーバーライドするという事は分かったのですが、
> 実際にどう実装すれば良いか分かりません。

ControlPaint.DrawBorder や ControlPaint.DrawBorder3D 等を利用して、
e.Graphics に対して、枠線描画のための処理を記述してみてください。
描画処理そのものについては、下記が参考になるかと思います。
http://dobon.net/vb/dotnet/graphics/index.html
■No26845に返信(魔界の仮面弁士さんの記事)
> ■No26844に返信(taroさんの記事)
>>OnPaintBackgroundをオーバーライドするという事は分かったのですが、
>>実際にどう実装すれば良いか分かりません。
>
> ControlPaint.DrawBorder や ControlPaint.DrawBorder3D 等を利用して、
> e.Graphics に対して、枠線描画のための処理を記述してみてください。
> 描画処理そのものについては、下記が参考になるかと思います。
> http://dobon.net/vb/dotnet/graphics/index.html

e.Graphicsに対して、
ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Red, ButtonBorderStyle.Solid);
を実装しましたが、パネルを囲む境界線は指定した色となりましたが、パネル内のセルの境界線の色は変化がありませんでした。

OnPaintBackgroundでなくOnCellPaintをオーバーライドし、セルの描画毎にそのセルの境界線を描画すると指定した色にすることができましたが、セルの数が多いと描画に時間がかかってしまいます。

OnPaintBackgroundのbaseメソッドを呼ばないとセルの境界線が描画されない為、この中でセルの境界線も描画していると思っているのですが…。

DOBON.NET | プログラミング道 | プログラミング掲示板