不要问为什么,但我需要在TableLayoutPanel
.
例如,为简单起见,假设我有 1 row, 5 column TableLayoutPanel
。每个单元格中都有一个按钮。我想在前 3 个单元格周围画一个框,然后在最后 2 个单元格周围画一个框。所以一共两盒。
关于如何做到这一点的任何建议?
谢谢。
不要问为什么,但我需要在TableLayoutPanel
.
例如,为简单起见,假设我有 1 row, 5 column TableLayoutPanel
。每个单元格中都有一个按钮。我想在前 3 个单元格周围画一个框,然后在最后 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
绘图是编码错误修剪,加上代码污染。直到 winforms 中的 TableLayoutPanel 开始支持表格中«border» 的基础知识,如果需要,最好使用带有额外表格的面板 (Dock:Fill)。