• [WinForm] TableLayoutPanel和FlowLayoutPanel的使用


    这篇文章主要跟大家分享下,在配餐系统的开发中,对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

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

    源码示例下载

    --------------------------------------

    欢迎您,进入 我系程序猿 的cnBlog博客。

    你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。

    You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.

    --------------------------------------

    分享到QQ空间  

  • 相关阅读:
    servlet生命周期和线程安全
    如何保证Redis与数据库的数据一致性
    消息队列高可用、幂等性、顺序性、可靠性传输、堆积问题解决
    如何保证消息队列消息的顺序性
    RabbitMQ 如何保证消息不丢失?
    深入理解MySql事务
    MySQL/mariadb知识点总结
    如何实现一个线程安全的单例,前提是不能加锁
    DUBBO原理、应用与面经总结
    SpringBoot中资源初始化加载的几种方式
  • 原文地址:https://www.cnblogs.com/jqmtony/p/3688572.html
Copyright © 2020-2023  润新知