概述
之前我们在使用FlexGrid的时候如果每个单元格的内容过长的时候,我们会调用FlexGrid自带的属性的AutoResizing和AllowResizing来调整列宽,这个往往只是调整了显示的单元格的宽度,整个FlexGrid的宽度未发生变化,本文主要介绍FlexGrid的列宽随着我们的窗口的变化而变化。
首先我们知道我们的列宽都是固定,也就是初始化的时候分配的列宽,由用户自定或者控件自动生成,除非用户设定dock属性是Fill,控件会填满整个窗口,在拉伸或者压缩窗口时,flexgrid才会变化,否则一直属于静态宽度,如图:
为了实现我们在拉伸或者压缩窗体的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;
这样当我们在拉伸压缩窗体时我们的控件会随着窗体大小变化。
如果你有疑问,可以到GCDN获得技术支持:
http://gcdn.grapecity.com.cn/showforum-68.html
GCDN:http://gcdn.grapecity.com.cn/
官方网站:/developer
标签: loading