Нарисовать границы вокруг ячейки в tablelayoutpanel с

Не спрашивайте, почему, но у меня есть требование нарисовать границу вокруг определенных ячеек в 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