Winform动态设置TableLayoutPanel等宽高

        最近有个项目要修改,看完后果断决定重构,里面很多不规范的地方,布局大部分都是计算出来的,但是基本没有采用布局控件,不能自适应,其中有类似九宫格的布局方式,放在WPF,那真是一个控件秒秒钟能搞定的事情,好多年没做winform了,拿回来还是很容易上手。在winform里,最适合就是TableLayoutPanel了,本来简单的内容想不写,不过可能有人需要用到就放上来。

        废话说那么多了,进入正题,其实动态布局很简单,就是SizeType.Percent,大小100F就好了,代码如下。

private void InitLayoutDemo()
        {
            TableLayoutPanel demoLayoutPanel = new TableLayoutPanel();
            demoLayoutPanel.Dock = DockStyle.Fill;
            this.Controls.Add(demoLayoutPanel);
            int row = 3, col = 3;
            DynamicLayout(demoLayoutPanel, row, col);
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < col; j++)
                {
                    Button btn = new Button();
                    btn.Text = string.Format("({0},{1})", i, j);
                    btn.Dock = DockStyle.Fill;
                    demoLayoutPanel.Controls.Add(btn);
                    demoLayoutPanel.SetRow(btn, i);
                    demoLayoutPanel.SetColumn(btn, j);
                }
            }
        }

        /// <summary>
        /// 动态布局
        /// </summary>
        /// <param name="layoutPanel">布局面板</param>
        /// <param name="row">行</param>
        /// <param name="col">列</param>
        private void DynamicLayout(TableLayoutPanel layoutPanel, int row, int col)
        {
            layoutPanel.RowCount = row;    //设置分成几行
            for (int i = 0; i < row; i++)
            {
                layoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
            }
            layoutPanel.ColumnCount = col;    //设置分成几列
            for (int i = 0; i < col; i++)
            {
                layoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            }
        }

注意,我这里TableLayoutPanel也是动态添加的,如果TableLayoutPanel是已经拖放到Form里面的,把原来的行列删剩一行一列,且保证都是百分比100%。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值