[WinForm] TableLayoutPanel和FlowLayoutPanel的使用

摘要:
tableLayoutPanel:表格布局面板,适合以表格形式规则的动态添加(显示)控件。

这篇文章主要跟大家分享下,在配餐系统的开发中,对tableLayoutPanel 和 flowLayoutPanel 控件的使用方法和技巧 ——后附上 测试demo, 相信需要的朋友下载看后能很快的知道其如何使用并实现一些效果和扩展应用!

tableLayoutPanel: 表格布局面板,适合以表格形式规则的动态添加(显示)控件。使用方法概述:1.将 tableLayoutPanel 拖放到窗体指定区域 ——一般做些基本的设置 或添加行或列,其它的就需写代码来控制显示 2.代码:

a. 删除默认的行和列样式

this.tableLayoutPanel4.ColumnStyles.Clear();
this.tableLayoutPanel4.RowStyles.Clear();

删除默认的行和列样式,避免影响表格整体显示的效果,使样式以默认或自定义的为准,注:tableLayoutPanel 拖放到窗体,默认为两行两列, 默认添加的代码如下:

this.tableLayoutPanel5.ColumnCount = 2;
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.Location = new System.Drawing.Point(72, 82);
this.tableLayoutPanel5.Name = "tableLayoutPanel5";
this.tableLayoutPanel5.RowCount = 2;
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));

b. 设置属性和添加控件到单元格

tableLayoutPanel4.AutoScroll = true;
tableLayoutPanel4.BackColor = Color.White;
tableLayoutPanel4.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
tableLayoutPanel4.ColumnCount = 6;
for (int i = 0; i < 26; i++)
{
    // ——行和列的 样式 默认为auto
    //tableLayoutPanel4.ColumnStyles.Add(new ColumnStyle());
    //tableLayoutPanel4.RowStyles.Add(new RowStyle());
    Label lab = new Label();
    lab.Text = "Label_" + i;
    lab.AutoSize = true;
    //通过Anchor 设置Label 列中居中
    lab.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left |     System.Windows.Forms.AnchorStyles.Right)));
    tableLayoutPanel4.Controls.Add(lab);
    TextBox txtObj = new TextBox();
    txtObj.Text = "TextBox_" + i;
    txtObj.Width = 70;
    tableLayoutPanel4.Controls.Add(txtObj);
}

ok, 以上代码即可实现,6列 行数根据添加项(上面的 lab和txtObj可称之为单元格的项)的个数多少而自动转行 tableLayoutPanel4.Controls.Add()方法会将控件添加到当前行单元格的后面,如果是最后一列,则自动转到下一行。

测试效果:

222U635B-0

flowLayoutPanel: 流式布局面板,直接看代码吧,就不多说了.

222UC192-1

[tableLayoutPanel 和 flowLayoutPanel 控件的区别:tableLayoutPanel 是根据是否是最后一列而转到下一行,更容易控制布局,适合做‘扫雷’、'五子棋'等网格类的布局显示控件;而flowLayoutPanel是根据当前行余下的宽度不足以放接下来的控件而转到下一行,如 下图,适用于不需要过多考虑布局的显示。]

想了解它们更多的应用,可浏览:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.tablelayoutpanel(VS.80).aspx

最后,补充说明一下,我也是第一次对这两个控件有比较实际的应用,对其只能算是有个大概的了解,有不对的地方,希望大家能给予指正,避免'误人子弟',呵呵...

源码示例下载

免责声明:文章转载自《[WinForm] TableLayoutPanel和FlowLayoutPanel的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XLua热更新用法全流程总结(所有容易出问题的点)C 语言popen函数,实现shell和读取内容下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

winForm 打印预览

  自己很少写技术博客,虽然已经干程序员两年多了,winform开发,web开发都干过,不论项目大小对于.net的相关技术也是了解的,如mvc,wcf,wpf,silverlight,socekt通讯,nhibernate,spring.net wp手机开发等,但是最终发现还是软件架构比所谓的单一功能更为系统化。  下面是一个小的例子 Winfom打印预览...

UGUI_屏幕适配

引用:http://www.xuanyusong.com/archives/3278#comments   1.可以选择的有三种: 1.Screen Space – overlay  此模式不需要UI摄像机,UI将永远出现在所有摄像机的最前面。我觉得overlay有问题,如果我想在UI前面放个东西就不行了,因为可能在UI前面放一个特效或者UI啥的。。 2....

pm grant 命令

CustomLocale.apk所需要的权限"android.permission.CHANGE_CONFIGURATION"自Android 4.2,4.2.2起系统定义为android:protectionLevel="signature|system|development",这就需要在已root的android设置上运行命令: adb shell...

System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。

今天在写导入Excel表格的代码,运行时却报异常,异常信息: System.InvalidOperationException: 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。 解决方案:下载2007 Office system 驱动程序:数据连接组件安装http://download.microsoft.com/dow...

【转】编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型

建议87:区分WPF和WinForm的线程模型WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button、TextBox等)必须由创建它的那个线程进行更新。WinForm在这方面的限制并不是很严格,所以像下面这样的代码,在WinForm中大部分情况下还能运行(本建议后面会详细解释为什么会出现这种现象): private void but...

Java继承中的super()关键字

super关键字 super 表示使用它的类的父类。super 可用于: 调用父类的构造方法; 调用父类的方法(子类覆盖了父类的方法时); 访问父类的数据域(可以这样用但没有必要这样用)。 调用父类的构造方法语法: super(); 或 super(参数列表); 注意:super 语句必须是子类构造方法的第一条语句。不能在子类中使用父类...