19

不要问为什么,但我需要在TableLayoutPanel.

例如,为简单起见,假设我有 1 row, 5 column TableLayoutPanel。每个单元格中都有一个按钮。我想在前 3 个单元格周围画一个框,然后在最后 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 回答