理由は聞かないでください。ただし、TableLayoutPanel
の特定のセルの周囲に境界線を引く必要があります。
たとえば、簡単にするために、1行5列のTableLayoutPanel
があるとします。各セルにはボタンがあります。最初の3つのセルの周りにボックスを描画し、次に最後の2つのセルの周りに別のボックスを描画したいと思います。つまり、合計2つのボックスです。
それを達成する方法について何か提案はありますか?
ありがとう。
CellPaint
イベントを使用して、必要に応じて境界線の長方形を描画できます。
tableLayoutPanel1.CellPaint += tableLayoutPanel1_CellPaint;
ハンドラー:
void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
if (e.Column == 1 && e.Row == 0)
e.Graphics.DrawRectangle(new Pen(Color.Blue), e.CellBounds);
}
ControlPaint
を使用して、あらゆる種類の境界線を描画できます。
if (e.Column == 1 && e.Row == 0)
{
var rectangle = e.CellBounds;
rectangle.Inflate(-1, -1);
ControlPaint.DrawBorder3D(e.Graphics, rectangle, Border3DStyle.Raised, Border3DSide.All); // 3D border
ControlPaint.DrawBorder(e.Graphics, rectangle, Color.Red, ButtonBorderStyle.Dotted); // dotted border
}
TableLayoutPanelのプロパティにアクセスし、CellBorderStyleをSingleに設定します
描画はコーディングエラーPruneに加えて、コードの汚染です。 winformsのTableLayoutPanelがテーブルの"border"の非常に基本的なサポートを開始するまで、必要に応じて、内部に追加のテーブルがあるパネル(Dock:Fill)を使用することをお勧めします。