Цветные ячейки в TableLayoutPanel с переменными во время выполнения?

В настоящее время у меня есть TableLayoutPanel с несколькими строками и столбцами. Он заполняется циклом for, который будет отличаться каждый раз, когда он запускается в зависимости от вывода SQL-запроса.

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);
        }
    }

Это код, который у меня есть в настоящее время для окрашивания отдельных строк, но я хотел бы иметь возможность окрашивать отдельные ячейки в зависимости от двух переменных (J и K).

                TableLayoutPanel.Controls.Add(label, J, K);

Точно так же вот пример того, как я добавил метку к ячейке в TableLayoutPanel, используя J и K. Можно ли перегрузить метод CellPaint, чтобы позволить использовать в нем J и K? или если да, то как я могу перекрашивать ячейки во время выполнения?


person Dan Barker    schedule 14.02.2013    source источник


Ответы (1)


CellPaint — это событие, а не метод. Я предлагаю вам создать метод GetColor(int row,int column), который возвращает цвет Brush, а затем в событии CellPaint вызвать ваш метод с e.Row и e.Column .

person Ewald Stieger    schedule 14.02.2013
comment
Как бы это работало, если бы у меня были J и K в основной части моей программы, методе и событии. Разве мне не нужно где-то устанавливать J и K в методе? - person Dan Barker; 14.02.2013
comment
Я считаю, что J и K - это индекс строки и столбца, в который вы добавляете свою метку. Таким образом, вы окрашиваете свои ячейки на основе индексов строк и столбцов. В методе GetColour вы должны определить, какой цвет вернуть, на основе J и K (индекс строки и столбца). Или я вас неправильно понимаю? - person Ewald Stieger; 15.02.2013