19

理由は聞かないでください。ただし、の特定のセルの周囲に境界線を引く必要がありますTableLayoutPanel

たとえば、簡単にするために、1行5列があるとしますTableLayoutPanel。各セルにはボタンがあります。最初の3つのセルの周りにボックスを描画し、次に最後の2つのセルの周りに別のボックスを描画したいと思います。つまり、合計2つのボックスです。

それを達成する方法について何か提案はありますか?

ありがとう。

4

3 に答える 3

30

イベントを使用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
}
于 2011-06-04T20:34:18.747 に答える
3

tableLayoutPanelのプロパティにアクセスし、CellBorderStyleをSingleに設定します

于 2017-01-18T09:55:59.873 に答える
1

描画は、コーディングエラーの除去とコードの汚染です。winformsのTableLayoutPanelがテーブルの«border»の非常に基本的なサポートを開始するまで、必要に応じて、内部に追加のテーブルがあるパネル(Dock:Fill)を使用することをお勧めします。

于 2019-12-29T22:11:44.440 に答える