2011-06-04 51 views
16

不要問爲什麼,但我需要在TableLayoutPanel中的某些單元格周圍繪製邊框。在桌面上的某些單元格周圍繪製邊框佈局面板

例如,爲了簡單起見,可以說我有1行5列TableLayoutPanel。每個單元格中都有一個按鈕。我想圍繞前3個單元繪製一個框,然後圍繞最後2個單元繪製另一個框。所以總共兩個盒子。

關於如何完成這一任何建議?

謝謝。在需要的時候

+0

爲什麼? ....... :) – Nick 2017-01-18 10:19:59

回答

26

你可以使用CellPaint事件,並繪製邊框的矩形:

tableLayoutPanel1.CellPaint += tableLayoutPanel1_CellPaint; 

的處理程序:

void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) 
{ 
    if (e.Column == 1 && e.Row == 0) 
     e.Graphics.DrawRectangle(new Pen(Color.Blue), e.CellBounds); 
} 

可以使用ControlPaint得出任何邊界的:

if (e.Column == 1 && e.Row == 0) 
{ 
    var rectangle = e.CellBounds; 
    rectangle.Inflate(-1, -1); 

    ControlPaint.DrawBorder3D(e.Graphics, rectangle, Border3DStyle.Raised, Border3DSide.All); // 3D border 
    ControlPaint.DrawBorder(e.Graphics, rectangle, Color.Red, ButtonBorderStyle.Dotted); // dotted border 
} 
+0

正是我所需要的!乾杯! – 2011-06-04 22:47:02

+2

我可以將它用於方法嗎?例如,我將定義像PaintDesiredCell(int columnOrder,int rowOrder){// codes}這樣的方法?可能嗎? – 2013-10-31 12:50:05

+0

我喜歡在調試時使用它。在IronPython中使用dot Net,我沒有GUI生成器,所以在試圖查找錯誤時能夠看到網格有幫助。我使用調試開關來確定是否連接單元格事件處理程序。 – 2014-11-19 11:38:04

3

訪問tableLayoutPanel和Set t的屬性他CellBorderStyle單一