2010-01-09 34 views

Trả lời

21

Có thể.

Sử dụng sự kiện CellPaint của TableLayoutPanel để kiểm tra hàng/cột nào đã gọi sự kiện và sau đó sử dụng kích thước đối tượng Đồ họa cho hình chữ nhật để đặt màu của ô.

Như thế này (đối với hàng đầu tiên và thứ ba):

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

Bạn muốn chắc chắn rằng bạn vứt bàn chải. Quấn sáng tạo của nó trong câu lệnh using() {} hoặc sử dụng Brushes.Blue tĩnh. Nếu không, bạn sẽ bị rò rỉ bộ nhớ trên mọi loại sơn. – Eilon

+0

cảm ơn lời nhắc, Eilon - và đề cập đến tùy chọn sử dụng Brushes tĩnh. –

+0

'Brushes.Blue' là thuộc tính tĩnh, vì vậy tôi sẽ không hủy bỏ nó, nếu không nó có thể trở thành không hợp lệ vào lần sau bạn sử dụng nó. –

5

Tôi tìm thấy câu trả lời này dễ dàng hơn nhiều để thực hiện:

này cho phép tôi đặt một backcolor đầy đủ trên di động của tôi.

  1. Tạo một Panel, trong đó có một backcolor, và
  2. tôi Dock rằng Panel trong tôi TableLayoutPanel

Sau đó rằng TableLayoutPanel di động có backcolor .

Mã của tôi đã kết thúc như thế này:

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

+1

Tính năng này hoạt động nhưng không hiệu quả về mặt mã yêu cầu, sử dụng bộ nhớ hoặc chu trình xử lý. –

Các vấn đề liên quan