我有一個TableLayoutPanel目前有多行+列。它由一個for循環填充,每次依賴於SQL查詢的輸出運行時都會有所不同。在運行時期間通過變量更改TableLayoutPanel的單元顏色?
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);
同樣這裏是我怎樣添加了一個標籤,使用J和K在TableLayoutPanel中的細胞是否有可能過載CellPaint方法,以允許J和K在它被使用的樣本?或者如果是的話,我怎麼能在運行時重新着色單元格?
我以前問過這個問題,並得到以下解決方案;
CellPaint是一個事件而不是方法。我建議你創建一個方法GetColor(int row,int column),它返回一個顏色Brush,然後在CellPaint事件中用e.Row和e.Column調用你的方法。
我不完全確定這是如何工作的,因爲我使用的變量在主程序中,那麼我不需要將這些變量與我的方法中的變量進行比較嗎?或者將它們設置在某處進行比較,然後再進行比較。任何人都可以爲我解釋這個更清楚嗎?或者給我一個例子?謝謝。
但如果我想讓行和列等於2個變量的值,我在form_load中有這種可能嗎? – 2013-02-14 14:41:46
@DanBarker使你的窗體類的變量字段,然後都將可用在GetBrushFor方法 – 2013-02-14 14:44:40
嗯當然是啊..我不知道爲什麼我沒有意識到...謝謝! – 2013-02-14 14:46:38