Подтвердить что ты не робот

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

Не спрашивайте, почему, но у меня есть требование нарисовать границу вокруг определенных ячеек в TableLayoutPanel.

Например, для простоты, скажем, у меня есть 1 строка, 5 столбцов TableLayoutPanel. Каждая ячейка имеет в ней кнопку. Я хотел бы нарисовать коробку вокруг первых трех ячеек, а затем еще одну ячейку вокруг последних двух ячеек. Итак, две коробки.

Любые предложения о том, как это сделать?

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать событие 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
}

Ответ 2

Свойства доступа для таблицыLayoutPanel и установите для параметра CellBorderStyle значение Single