仅绘制TableLayoutPanel单元格的外边框

时间:2012-09-24 14:20:28

标签: c# .net winforms

我正在使用TableLayoutPanel,例如,如果我有3行和5列。我想只绘制整个面板的外边框。默认情况下,面板提供CellBorderStyle,它将所有边框边框添加到所有可用单元格中。有什么方法可以只设置外边界吗?

我在下面提供了示例代码。

    TableLayoutPanel tblPanel = new TableLayoutPanel;
    tblPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
    Label lblName;
    TextBox txtName;
    Button btnAdd;
    int colCnt = 0;
    for(int rw =0; rw < 3; rw++)
    {
            lblName = new Label();
            lblName.Name = "mylabel" + rw.ToString();
            tblPanel.Controls.Add(lblName, colCnt, rw);
            colCnt++;

            txtName = new TextBox();
            txtName.Name = "mytext" + rw.ToString();
            tblPanel.Controls.Add(txtName, colCnt, rw);
            colCnt++;

            btnAdd = new Button();
            btnAdd.Name = "mybutton" + rw.ToString();
            tblPanel.Controls.Add(btnAdd, colCnt, rw);

            colCnt = 0;
    }

4 个答案:

答案 0 :(得分:4)

我看到你是一张非常新的海报。这里的行为准则是​​你真的应该展示你所尝试的并找出技术问题。不只是以这种方式提出问题(特别是那些让你看起来甚至没有尝试过的东西)。

那就是说,并试图帮助你,你最好自己画细胞边界。这是以下几行中的内容,然后自定义:

    public TableForm() {
        InitializeComponent();
        this.tableLayoutPanel.CellPaint += tableLayoutPanel_CellPaint;
    }

    private void tableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e) {
        e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Right, e.CellBounds.Top));
    }

在设计时: At design-time

在运行时: At runtime

答案 1 :(得分:4)

TableLayoutPanel确实支持BorderStyle属性,这就是你想要的。例如:

tableLayoutPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;

https://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.borderstyle(v=vs.110).aspx

装饰着:

[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]

所以Intellisense不会向你展示它,但它是有记录的并且有效。我不知道它为什么不可浏览。

答案 2 :(得分:2)

TableLayOutPanel本身不支持除了CellBorderStyle之外的边框属性,这不是你想要的。

我建议您将TableLayOutPanel放入Panel控件并将TableLayOutPanel的Dock属性设置为Fill。

然后将Panel的BorderStyle设置为您想要的(FixedSingle或Fixed3D)

答案 3 :(得分:1)

您可以通过将CellBorderStyle属性更改为Single或所需的选择来实现。

属性更改:

enter image description here

样品:

enter image description here