簡體   English   中英

在 tablelayoutpanel 中的某些單元格周圍繪制邊框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM