Winform FlexGrid列宽适应于窗口大小

发布时间:2017/09/25 00:09 发布者:jeffryli

返回博客中心

概述

之前我们在使用FlexGrid的时候如果每个单元格的内容过长的时候,我们会调用FlexGrid自带的属性的AutoResizing和AllowResizing来调整列宽,这个往往只是调整了显示的单元格的宽度,整个FlexGrid的宽度未发生变化,本文主要介绍FlexGrid的列宽随着我们的窗口的变化而变化。

首先我们知道我们的列宽都是固定,也就是初始化的时候分配的列宽,由用户自定或者控件自动生成,除非用户设定dock属性是Fill,控件会填满整个窗口,在拉伸或者压缩窗口时,flexgrid才会变化,否则一直属于静态宽度,如图:

image

为了实现我们在拉伸或者压缩窗体的FlexGrid也能随之变化,自适应的调整宽度,所以我们在每次在SizeChanged事件触发时重新根据窗口的大小再次计算FlexGrid的每一列的宽度。

如下代码:

        public int oldwid = 1;//原始宽度
        public int newwid = 1;//新宽度
        public int tempwid = 1;//变更的上次的宽度

   1:  double compare = 1;//变化比例
   2:              newwid = this.Width;
   3:              Console.WriteLine(oldwid + ":" + newwid + "\n");
   4:              if (tempwid != 1)
   5:                  compare = Math.Round((1.0 * tempwid / newwid), 3);
   6:              else
   7:                  compare = Math.Round((1.0 * oldwid / newwid), 3);
   8:   
   9:              foreach (Column item in c1FlexGrid1.Cols)
  10:              {
  11:                  item.Width = (int)Math.Round((1.0 * item.WidthDisplay / compare), 0);
  12:              }
  13:              //c1FlexGrid1.ExtendLastCol = true;
  14:              tempwid = newwid;

这样当我们在拉伸压缩窗体时我们的控件会随着窗体大小变化。

image

image

如果你有疑问,可以到GCDN获得技术支持:

http://gcdn.grapecity.com.cn/showforum-68.html

GCDNhttp://gcdn.grapecity.com.cn/

官方网站/developer

标签: loading


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网