← 返回所有博客文章

概述

之前我们在使用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