TableLayoutPanel的行/列着色(vs2008,winform)

时间:2010-01-09 04:48:25

标签: winforms visual-studio-2008

我可以为TableLayoutPanel中的整个行或列添加特定颜色吗? 怎么样 ?如果有的话请提供示例代码..

先谢谢。

2 个答案:

答案 0 :(得分:21)

是的,你可以。

使用TableLayoutPanel的CellPaint事件来测试哪个行/列调用了事件,然后使用Graphic对象大小来设置矩形以设置单元格的颜色。

像这样(第一行和第三行):

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

答案 1 :(得分:5)

我发现这个答案更容易实现:

这让我可以在我的手机上放一个完整的背景色。

  1. 创建一个Panel,其背景颜色为
  2. Dock <{1}} Panel TableLayoutPanel

    然后TableLayoutPanel Cell有一个     背景色。

    我的代码最终看起来像这样:

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

    http://www.codeguru.com/forum/showthread.php?t=444944