zoukankan      html  css  js  c++  java
  • [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空间  

  • 相关阅读:
    Dot Net WinForm 控件开发 (七) 为属性提下拉式属性编辑器
    WinForm 程序的界面多语言切换
    c#遍历HashTable
    Dot Net WinForm 控件开发 (三) 自定义类型的属性需要自定义类型转换器
    Dot Net WinForm 控件开发 (六) 为属性提供弹出式编辑对话框
    Dot Net WinForm 控件开发 (一) 写一个最简单的控件
    Dot Net WinForm 控件开发 (四) 设置属性的默认值
    Dot Net WinForm 控件开发 (二) 给控件来点描述信息
    Dot Net WinForm 控件开发 (八) 调试控件的设计时行为
    Dot Net WinForm 控件开发 (五) 复杂属性的子属性
  • 原文地址:https://www.cnblogs.com/jqmtony/p/3688572.html
Copyright © 2011-2022 走看看