我已将TableLayoutPanel
放在Windows窗体上。
它有3列2行。
我已将TableLayoutPanel的CellBorderStyle属性设置为" Single"。
我想动态隐藏第二列。
为实现这一点,我写了以下代码:
tableLayoutPanel1.ColumnStyles[0].Width = 0;
答案 0 :(得分:2)
您需要owner.draw TLP:
这是一种方法:关闭CellBorder
并对此事件进行编码
private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
Rectangle r = e.CellBounds;
using (Pen pen = new Pen(Color.DarkGoldenrod))
{
// top and left lines
e.Graphics.DrawLine(pen, r.X, r.Y, r.X + r.Width, r.Y);
e.Graphics.DrawLine(pen, r.X, r.Y, r.X, r.Y + r.Height);
// last row? move hor.lines 1 up!
int cy = e.Row == tableLayoutPanel1.RowCount - 1 ? -1 : 0;
if (cy != 0) e.Graphics.DrawLine(pen, r.X, r.Y + r.Height + cy,
r.X + r.Width, r.Y + r.Height + cy);
// last column ? move vert. lines 1 left!
int cx = e.Column == tableLayoutPanel1.ColumnCount - 1 ? -1 : 0;
if (cx != 0) e.Graphics.DrawLine(pen, r.X + r.Width + cx, r.Y,
r.X + r.Width + cx, r.Y + r.Height);
}
}
但是你应该问问自己为什么会出现这种情况,如果用户不能真正看到有一个隐藏的列......