Winform动态设置TableLayoutPanel等宽高

简介: 转自博客: http://blog.csdn.net/langyuewu/article/details/38865423最近有个项目要修改,看完后果断决定重构,里面很多不规范的地方,布局大部分都是计算出来的,但是基本没有采用布局控件,不能自适应,其中有类似九宫格的布局方式,放在WPF,那真是一个控件秒秒钟能搞定的事情,好多年没做winform了,拿回来还是很容易上手。
转自博客:
http://blog.csdn.net/langyuewu/article/details/38865423

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

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


[csharp]  view plain copy
  1. private void InitLayoutDemo()  
  2.         {  
  3.             TableLayoutPanel demoLayoutPanel = new TableLayoutPanel();  
  4.             demoLayoutPanel.Dock = DockStyle.Fill;  
  5.             this.Controls.Add(demoLayoutPanel);  
  6.             int row = 3, col = 3;  
  7.             DynamicLayout(demoLayoutPanel, row, col);  
  8.             for (int i = 0; i 
  9.             {  
  10.                 for (int j = 0; j 
  11.                 {  
  12.                     Button btn = new Button();  
  13.                     btn.Text = string.Format("({0},{1})", i, j);  
  14.                     btn.Dock = DockStyle.Fill;  
  15.                     demoLayoutPanel.Controls.Add(btn);  
  16.                     demoLayoutPanel.SetRow(btn, i);  
  17.                     demoLayoutPanel.SetColumn(btn, j);  
  18.                 }  
  19.             }  
  20.         }  
  21.   
  22.         ///   
  23.         /// 动态布局  
  24.         ///   
  25.         /// 布局面板  
  26.         /// 行  
  27.         /// 列  
  28.         private void DynamicLayout(TableLayoutPanel layoutPanel, int row, int col)  
  29.         {  
  30.             layoutPanel.RowCount = row;    //设置分成几行  
  31.             for (int i = 0; i 
  32.             {  
  33.                 layoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));  
  34.             }  
  35.             layoutPanel.ColumnCount = col;    //设置分成几列  
  36.             for (int i = 0; i 
  37.             {  
  38.                 layoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));  
  39.             }  
  40.         }  

注意,我这里TableLayoutPanel也是动态添加的,如果TableLayoutPanel是已经拖放到Form里面的,把原来的行列删剩一行一列,且保证都是百分比100%。
相关文章
|
Windows
Winform控件优化之背景透明那些事1:Button控件等背景透明
WinForm不支持真正的透明,其控件透明的实现都是背景颜色设置和对应位置的父控件背景相同。 Winform中控件的背景透明只有三种:Button控件的透明、其他控件的透明...
2917 0
Winform控件优化之背景透明那些事1:Button控件等背景透明
|
4月前
|
开发框架 前端开发 JavaScript
在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件
在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件
Winform控件优化之圆角Panel【绘制时需要注意的几点和扩展】
圆角的实现(原理和绘制方法)之前基本都已经介绍,本篇主要是实现圆角Panel时介绍几点注意点和一些扩展。一是BackColor应始终为Transparent;二是Draw完全显示绘制出的线条...
1610 0
Winform控件优化之圆角Panel【绘制时需要注意的几点和扩展】
C#编程-73:panel控件中显示子窗体
C#编程-73:panel控件中显示子窗体
194 0
|
Android开发
Android获取状态栏高度,动态设置控件高度
获取状态栏高度;动态设置控件高度 ;务必保持一致 ( LinearLayout. LinearLayout.LayoutParams 与需要设置的控件父控件)
784 0
实例1、用TableLayoutPanel 制作表格
实例1、用TableLayoutPanel 制作表格
730 0
实例1、用TableLayoutPanel 制作表格
splitcontainer控件固定Panel的大小
splitcontainer控件固定Panel的大小
247 0
tablayout支持改变选中文字大小,支持左右滑动,支持viewpager,支持三角可移动指示器
TabLayout [简书地址] (https://www.jianshu.com/p/2c3f868266e8) 基于大神的FlycoTabLayout 传送地址和基本用法 用法和属性和这个库一样 效果图如下 Gif_20180828_142709.
2491 0
|
Android开发
android:elevation属性,控制View底部渐变阴影
android:elevation属性,控制View底部渐变阴影 android:elevation这一属性,可以控制View底部渐变阴影,给一个View在其底部增加一定的灰度渐变阴影效果,如图: 上图是一个简单的TextView,TextView底部阴影渐变。
2712 0