#c# #.net #tablelayoutpanel
#c# #.net #tablelayoutpanel
Вопрос:
Я TableLayoutPanel
разместил форму Windows. В нем 3 столбца и 2 строки. Я установил для свойства CellBorderStyle TableLayoutPanel значение «Single». Я хочу динамически скрыть второй столбец. Для достижения этого я должен написать следующий код:
tableLayoutPanel1.ColumnStyles[0].Width = 0;
Но тогда TableLayoutPanel
будет выглядеть так, как показано ниже.Посмотрите на границу, граница становится толстой:
Кто-нибудь может решить эту проблему?
Ответ №1:
Вам понадобится владелец.нарисуйте 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);
}
}
Но вам лучше спросить себя, почему возникла такая ситуация, и если пользователь не должен, возможно, на самом деле видеть, что столбец скрыт..