C# 在运行时使用变量为TableLayoutPanel中的单元格着色?

C# 在运行时使用变量为TableLayoutPanel中的单元格着色?,c#,winforms,tablelayoutpanel,C#,Winforms,Tablelayoutpanel,我有一个TableLayoutPanel,当前有多行+多列。它由for循环填充,每次根据SQL查询的输出运行时,for循环都会有所不同 void tblTableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e) { if (e.Row == 2 || e.Row == 4) { Graphics g = e.Graphics;

我有一个TableLayoutPanel,当前有多行+多列。它由for循环填充,每次根据SQL查询的输出运行时,for循环都会有所不同

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)为单个单元格着色


类似地,下面是我如何使用J和K向TableLayoutPanel中的单元格添加标签的示例。是否可以重载CellPaint方法以允许在其中使用J和K?或者,如果是这样,我如何在运行时对单元格重新着色?

CellPaint是一个事件,而不是一个方法。我建议您创建一个方法GetColor(int row,int column),该方法返回一个颜色画笔,然后在CellPaint事件中使用e.row和e.column调用您的方法。

如果我的程序、方法和事件的主要部分中有J和K,这将如何工作。我不需要在方法中的某个地方设置J和K吗?我相信J和K是添加标签的行和列索引。因此,您将根据行和列索引为单元格着色。在getColor方法中,您将根据J和K(行和列索引)确定要返回的颜色。还是我误解了你?
                TableLayoutPanel.Controls.Add(label, J, K);