У меня есть TableLayoutPanel в настоящее время с несколькими столбцами + столбцами. Он заполняется циклом for, который будет отличаться при каждом запуске, зависящем от вывода SQL Query.Изменение цветов ячеек таблицыLayoutPanel по переменным во время выполнения?
void tblTableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
if (e.Row == 2 || e.Row == 4)
{
Graphics g = e.Graphics;
Rectangle r = e.CellBounds;
g.FillRectangle(Brushes.Red, r);
}
}
Это код, который я получил в настоящее время окрашивать отдельные строки, но я хотел бы, чтобы иметь возможность окрашивать отдельные клетки в зависимости от 2-х переменных (J и K).
TableLayoutPanel.Controls.Add(label, J, K);
Аналогично вот пример того, как я добавил метку на ячейку в TableLayoutPanel с использованием J и K. Можно перегрузить метод CellPaint, чтобы позволить J и К, которые будут использоваться в нем? или если да, то как я могу перекрасить ячейки во время выполнения?
Ранее я задал этот вопрос и получил следующее решение;
CellPaint - это событие, а не способ. Я предлагаю вам создать метод GetColor (int row, int column), который возвращает цветную кисть, а затем в событии CellPaint вызовет ваш метод с помощью e.Row и e.Column.
Я не совсем уверен, как это будет работать, поскольку переменные, которые я использую, находятся в основной программе, не нужно ли мне сравнивать их с переменными в моем методе? или установить их где-то для сравнения, а затем после этого сделать событие. Может ли кто-нибудь объяснить это немного яснее для меня? или, может быть, дать мне пример? Благодарю.
но если я хочу, чтобы строка и столбцы были равны значению двух переменных, которые у меня есть в form_load, возможно? –
@ DanBarker делает эти поля переменных вашего класса формы, тогда оба будут доступны в методе GetBrushFor –
. Ах да, конечно .. Я не знаю, почему я этого не осознавал ... Спасибо! –