这篇文章主要跟大家分享下,在配餐系统的开发中,对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()方法会将控件添加到当前行单元格的后面,如果是最后一列,则自动转到下一行。

测试效果:

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

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

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

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

源码示例下载

[WinForm] TableLayoutPanel和FlowLayoutPanel的使用的更多相关文章

  1. vs 在高分屏下开发 winform 配置

    一.窗体控件大小 第一种方法:使用网格避免整除误差 在选项中将Windows窗体设计器的LayoutMode(布局模式)改成SnapToGrid(对齐到网格),并将Default Grid Cell ...

  2. 笔记13 winform

    一:panel 和 tablelayoutpanel,FlowLayoutPanel FlowLayoutPanel和TableLayoutPanel是.NET Framework的新增控件.顾名思义 ...

  3. 简单bat语法

    一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法 echo [{on off}] [message] ...

  4. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  5. Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z

    http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...

  6. winform布局 FlowLayoutPanel的控件

    http://www.cnblogs.com/moon-mountain/archive/2011/09/08/2171232.html 1.采用流布局:工具箱里边容器里有一个:FlowLayoutP ...

  7. 发现C#winform编程中不常用的控件(一)<FlowLayoutPanel控件><拆分器控件Splitcontainer >

    第一部分:FlowLayoutPanel控件 实现效果: 将FlowLayoutPanel做为导航菜单按钮的容器 以实现 某个菜单按钮不显示时 整体的导航菜单布局不至于"缺憾" 原 ...

  8. C#中常见的winform控件命名规范

    我们知道Button 常常简称为btn,那么Winform中的其它控件呢,这篇文章在C#的winform控件命名规范 的基础上对一些控件的名称的简称进行了整理. 1. 标准控件 NO. 控件类型简写 ...

  9. winform窗体 控件【菜单和工具栏控件】【容器控件】

    winform的菜单栏和工具栏    1.ContextMenuStrip   -- 右键菜单     可以绑定在任何一个控件上,添加操作快捷键,并可以设置多层    每行相当于一个按钮,输入-可添加 ...

随机推荐

  1. How Tomcat Works(十七)

    在前面的文章中,已经学会了如何通过实例化一个连接器和容器来获得一个servlet容器,并将连接器和容器相关联:但在前面的文章中只有一个连接器可用,该连接器服务8080端口上的HTTP请求,无法添加另一 ...

  2. IAP内购

    IAPHelper.h // // IAPHelper.h // airplay // // Created by apple on 13-10-23. // Copyright (c) 2013年 ...

  3. MyArrayList——实现自己的ArrayList!

    注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5965205.html ArrayList是我们常用的集合类之一,其实它的实现机制很简单,底层还是使用了一个 ...

  4. 【转】Android 实现蘑菇街购物车动画效果

    原文出处:http://blog.csdn.net/wangjinyu501/article/details/38400479 1.思路   目前想到两种方式实现这种效果,一是使用Tween动画,直截 ...

  5. javascript js 内存泄露

    JavaScript 内存泄露 1.什么是闭包.以及闭包所涉及的作用域链这里就不说了. 2.JavaScript垃圾回收机制 JavaScript不需要手动地释放内存,它使用一种自动垃圾回收机制(ga ...

  6. ADO与ADO.NET的区别

    ADO是使用ole db接口并基于微软的COM技术,ADO.NET使用自己的ADO.NET接口并基于微软的.NET体系架构,所以ADO.NET与ADO是两种数据访问方式. ADO以recordset存 ...

  7. 通过ajax获得json数据后格式的转换

    在有些情况下获取到的json数据可能是string类型的,需要把其格式化为json对象才方便解析. a)原生js通过ajax获取到的json 此时返回的数据默认是string型的,所以需要用eval( ...

  8. HTML5、CSS3各浏览器兼容性

    推荐一个网站 [点这里] 在这个网站中可以给你所有Web特性在各个不同浏览器以及相同浏览器的不同版本的兼容性. 还可以显示使用各个版本的浏览器的使用比例. 首页中显示所有的H5.CSS3等特性.点进去 ...

  9. 容器的end()方法

    容器的end()方法,返回一个迭代器,需要注意:这个迭代器不指向实际的元素,而是表示末端元素的下一个元素,这个迭代器起一个哨兵的作用,表示已经处理完所有的元素. 因此,在查找的时候,返回的迭代器,不等 ...

  10. 区分copy构造与copy赋值

    1. Widget w1; //调用Default构造方法 Widget w2(w1); //调用copy构造方法 w1 = w2; //调用copy赋值操作符 Widget w3 = w2;   / ...