【问题标题】:TableLayoutPanel - resize each cell on resizing parent controlTableLayoutPanel - 在调整父控件大小时调整每个单元格的大小
【发布时间】:2017-09-18 06:14:48
【问题描述】:

我正在处理一个包含TableLayoutPanel 的控件。 该面板包含 X 行和 Y 列 - 每个单元格的大小相同。 每个单元格包含一个Control 当父控件被调整大小时,我希望每个单元格也被调整大小,并保持彼此相同的大小。

我尝试在添加到单元格时设置Controls' Anchor

control.Anchor = AnchorStyles.Left | AnchorStyles.Top |
                 AnchorStyles.Right | AnchorStyles.Bottom;

但这只会使底行和最右边的列展开。

【问题讨论】:

    标签: c# .net winforms tablelayoutpanel


    【解决方案1】:

    使用设计器或代码,您可以将列和行的SizeType 设置为Percent,并为其大小分配相同的百分比值。还将控件的Dock 属性设置为Fill

    例如:

    tableLayoutPanel1.ColumnStyles.Clear();
    tableLayoutPanel1.RowStyles.Clear();
    for (var i = 0; i < tableLayoutPanel1.ColumnCount; i++)
    {
        var percent = 100f / (float)tableLayoutPanel1.ColumnCount;
        tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, percent));
    }
    for (var i = 0; i < tableLayoutPanel1.RowCount; i++)
    {
        var percent = 100f / (float)tableLayoutPanel1.RowCount;
        tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, percent));
    }
    

    【讨论】:

    • 谢谢!这是一个很大的帮助。但是发生了一些奇怪的事情:最后一行和最后一列比其他行/列大一点?如果我将 SizeType 设置为 Absolute,它们的大小将相同,但不会调整大小。
    • 不客气。看一个例子here。我无法重现您在 cmets 中提到的问题。
    猜你喜欢
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多