[英]Draw borders around some cells in a tablelayoutpanel
不要問為什么,但我需要在TableLayoutPanel
中的某些單元格周圍繪制邊框。
例如,為簡單起見,假設我有一個 1 行 5 列的TableLayoutPanel
。 每個單元格中都有一個按鈕。 我想在前 3 個單元格周圍畫一個框,然后在最后 2 個單元格周圍畫一個框。 所以一共兩盒。
關於如何做到這一點的任何建議?
謝謝。
您可以使用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
}
訪問 tableLayoutPanel 的屬性並將 CellBorderStyle 設置為 Single
繪圖是編碼錯誤修剪,加上代碼污染。 直到 winforms 中的 TableLayoutPanel 開始支持表格中的«border» 的基礎知識,如果需要,最好使用帶有額外表格的面板 (Dock:Fill)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.