Окрашивание строк / столбцов для TableLayoutPanel (версия 2008, winform)
Могу ли я добавить определенный цвет для всей строки или столбца в TableLayoutPanel? Как? Пожалуйста, предоставьте образец кода, если таковой имеется.
Спасибо в Adv.
2 ответа
Решение
Да, ты можешь.
Используйте событие CellPaint TableLayoutPanel, чтобы проверить, для какой строки / столбца вызвано событие, а затем используйте размер графического объекта для прямоугольника, чтобы установить цвет ячейки.
Вот так (для первого и третьего ряда):
private void Form_Load(object sender, EventArgs e) {
this.tableLayoutPanel1.CellPaint += new TableLayoutCellPaintEventHandler(tableLayoutPanel1_CellPaint);
}
void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
if (e.Row == 0 || e.Row == 2) {
Graphics g = e.Graphics;
Rectangle r = e.CellBounds;
g.FillRectangle(Brushes.Blue, r);
}
}
Я нашел этот ответ гораздо проще реализовать:
Это позволило мне поставить полный цвет на мою камеру.
- Создать
Panel
, который имеет задний цвет, и - я
Dock
тотPanel
в моемTableLayoutPanel
Тогда что TableLayoutPanel
Клетка имеет задний цвет.
Мой код в итоге выглядел так:
Panel backgroundColorPanel = new Panel();
backgroundColorPanel.BackColor = Color.FromArgb(243, 243, 243);
backgroundColorPanel.Dock = DockStyle.Fill;
backgroundColorPanel.Margin = new Padding(0);
backgroundColorPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left));
backgroundColorPanel.AutoSize = true;
backgroundColorPanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.originalTableLayoutPanel.Controls.Add(backgroundColorPanel, 0, row);