列样式不适用于TableLayoutPanel

时间:2014-02-24 03:06:54

标签: c#

我有一个TableLayoutPanel,它具有由用户确定的动态数量的列和行。我希望里面的按钮是正方形和相同的大小,但每当我使用循环来设置列/行样式时,它们永远不会变成我想要它们的大小。

如何让列/行样式设置容器元素的适当宽度和高度?

这是处理设置表格宽度大小的代码的循环方法(我对行使用类似的方法)

 void FormatTableWidth(ref TableLayoutPanel container)
    {
        TableLayoutColumnStyleCollection columnStyles = container.ColumnStyles;
        foreach (ColumnStyle style in columnStyles)
        {
            style.SizeType = SizeType.Absolute;

            style.Width = 60;
        }
    }

2 个答案:

答案 0 :(得分:4)

你可以像......那样做。

public void AddButtontControls()
        {
            tblPanel.SuspendLayout();
            tblPanel.Controls.Clear();           
            tblPanel.GrowStyle = TableLayoutPanelGrowStyle.FixedSize;//.AddColumns;
            tblPanel.ColumnStyles.Clear();
            for (int i = 0; i < tblPanel.ColumnCount; i++)
            {
                ColumnStyle cs = new ColumnStyle(SizeType.Percent, 100 / tblPanel.ColumnCount);
                tblPanel.ColumnStyles.Add(cs);

                //Add Button
                Button a = new Button();
                a.Text = "Button " + i + 1;                
                tblPanel.Controls.Add(a);
            }
            tblPanel.ResumeLayout();
        }

答案 1 :(得分:0)

很抱歉告诉您,但您没有使用正确的控件。 您绝对必须使用FlowLayoutPanel控件,并且可以在其中添加任意数量的控件,可以告诉哪个方向将填充该控件(是否包装内容)以及许多其他控件。

最重要的是-它不会像TableLayoutPanel一样闪烁:)